# Configuration **experimental** ## The `package.json` file A Pear project **must** have a `package.json` file and a main entry file. The `package.json` file **must** have either a `name` property or `pear` object with a `name` property. The `package.json` `name` field must be lowercase and one word, and may contain letters, numbers, hyphens (`-`), underscores (`_`), forward slashes (`/`) and asperands (`@`). The `package.json` file may also contain a `main` field, which typically should point to an HTML file. If omitted, `index.html` or `index.js` is the default entry file depending on application type. Any other fields (such as `dependencies`) may also be present in the `package.json` file. The `package.json` `pear` object contains application configuration and is exposed via the API as `pear.config.options`. Pear versioning is automatic. The `package.json` file does **not** require a version field, the version field will be ignored. ## The `package.json` `pear` field. ### `pear.name ` The name of the application. Overrides `package.json` `name`. ### `pear.builtinsMap ` Terminal Applications Only Terminal Applications run on the [`bare`](https://github.com/holepunchto/bare) JavaScript runtime, which has a very small core so code with expects say, an `fs` module will throw MODULE_NOT_FOUND unless that namespace is mapped to an installed module. Provide an object that maps builtin dependency namespaces to installed modules. An example `package.json`: ```json { "name": "example", "pear": { "builtinsMap": { "fs": "bare-fs" } } } ``` > In future this option may also apply to Desktop Applications. ### `pear.gui ` Graphical User Interface configuration options. #### `pear.gui.width ` Window width (pixels). #### `pear.gui.height ` Window height (pixels). #### `pear.gui.x ` Horizontal window position (pixels). #### `pear.gui.y ` Vertical window position (pixels). #### `pear.gui.minWidth ` Window minimum width (pixels). #### `pear.gui.minHeight ` Window minimum height (pixels). #### `pear.gui.maxWidth ` Window maximum width (pixels). #### `pear.gui.maxHeight ` Window maximum height (pixels). #### `pear.gui.center ` (default: `false`) Center window. #### `pear.gui.resizable ` (default: `true`) Window resizability. #### `pear.gui.movable ` (default: `true`) Window movability. #### `pear.gui.minimizable ` (default: `true`) Window minimizability. #### `pear.gui.maximizable ` (default: `true`) Window maximizability. #### `pear.gui.closable ` (default: `true`) Window closability. #### `pear.gui.focusable ` (default: `true`) Window focusability. #### `pear.gui.alwaysOnTop ` (default: `false`) Set window to always be on top. #### `pear.gui.fullscreen ` (default: `false`) Set window to fullscreen on start. #### `pear.gui.kiosk ` (default: `false`) Set window to enter kiosk mode on start. #### `pear.gui.autoHideMenuBar ` (default: `false`) Hide menu bar unless Alt key is pressed (Linux, Windows). #### `pear.gui.hasShadow ` (default: `true`) Window shadow. #### `pear.gui.opacity ` (default: `1`) Set window opacity (0.0 - 1.0) (Windows, macOS). #### `pear.gui.transparent ` (default: `false`) Enable transparency. Must be set for opacity to work. #### `pear.gui.backgroundColor ` (default: "#000" non-transparent, "#00000000" transparent) Background color (Hex, RGB, RGBA, HSL, HSLA, CSS color). ### `pear.stage ` Staging configuration options. #### `pear.stage.entrypoints ` An array of entrypoints as staging start-points in addition to (deduped) main entry point. #### `pear.stage.ignore ` An array of file paths to ignore relative to `package.json` file.