> For the complete documentation index, see [llms.txt](/llms.txt).

# Snaps configuration options

This reference describes the syntax of the Snaps command line interface (CLI) configuration options. You can specify these options in the [configuration file](/snaps/learn/about-snaps/files/#configuration-file).

### `customizeWebpackConfig`[​](#customizewebpackconfig "Direct link to customizewebpackconfig")

- Syntax
- Example

```
customizeWebpackConfig: <FUNCTION>,

```

```
customizeWebpackConfig: (config) =>
  merge(config, {
    plugins: [
      // Add a plugin.
    ],
    module: {
      rules: [
        // Add a loader.
      ],
    },
  }),

```

A function that customizes the Webpack configuration. For example, you can use this option to add a Webpack plugin, provide a polyfill, or add a loader.

The function should receive the Webpack configuration object and return the modified configuration object. For convenience, the Snaps CLI exports a `merge` function that you can use to merge the configuration object with the [default Webpack configuration](https://github.com/MetaMask/snaps/blob/main/packages/snaps-cli/src/webpack/config.ts).

### `environment`[​](#environment "Direct link to environment")

- Syntax
- Example

```
environment: <ENVIRONMENT>,

```

```
environment: {
  SNAP_ENV: process.env.SNAP_ENV,
  PUBLIC_KEY: process.env.PUBLIC_KEY,
},

```

The environment configuration. You can use this to [set environment variables for the Snap](/snaps/how-to/use-environment-variables/), which can be accessed using `process.env`.

### `evaluate`[​](#evaluate "Direct link to evaluate")

- Syntax
- Example

```
evaluate: <BOOLEAN>,

```

```
evaluate: true,

```

Enables or disables evaluating the bundle. When set to `true`, the bundle is checked for compatibility issues with the Snaps runtime. If there are any issues, the CLI exits with an error.

### `experimental`[​](#experimental "Direct link to experimental")

Experimental features.

caution

These features are not stable, and might change in the future.

#### `experimental.wasm`[​](#experimentalwasm "Direct link to experimentalwasm")

- Syntax
- Example

```
experimental: {
  wasm: <BOOLEAN>,
},

```

```
experimental: {
  wasm: true,
},

```

Enables or disables WebAssembly support. When set to `true`, WebAssembly files can be imported in the Snap. For example:

```
import program from './program.wasm'

// Program is initialized synchronously.
// ...

```

### `features`[​](#features "Direct link to features")

#### `features.images`[​](#featuresimages "Direct link to featuresimages")

- Syntax
- Example

```
features: {
  images: <BOOLEAN>,
},

```

```
features: {
  images: false,
},

```

Enables or disables [image support](/snaps/features/custom-ui/#image). The default is `true`.

### `input`[​](#input "Direct link to input")

- Syntax
- Example

```
input: <FILE>,

```

```
input: "src/index.js",

```

The entry point of the Snap. This is the file that will be bundled. The default is `"src/index.js"`.

### `manifest`[​](#manifest "Direct link to manifest")

The Snap [manifest file](/snaps/learn/about-snaps/files/#manifest-file) configuration.

#### `manifest.path`[​](#manifestpath "Direct link to manifestpath")

- Syntax
- Example

```
manifest: {
  path: <FILE>,
},

```

```
manifest: {
  path: "snap.manifest.json",
},

```

Path to the Snap manifest file. The default is `"snap.manifest.json"`.

#### `manifest.update`[​](#manifestupdate "Direct link to manifestupdate")

- Syntax
- Example

```
manifest: {
  update: <BOOLEAN>,
},

```

```
manifest: {
  update: false,
},

```

Enables or disables updating the manifest file with the bundle shasum, and making any other possible updates. If set to `false`, the manifest is not updated, and an error is thrown if the manifest is not up-to-date. The default is `true`.

### `output`[​](#output "Direct link to output")

The output configuration.

#### `output.clean`[​](#outputclean "Direct link to outputclean")

- Syntax
- Example

```
output: {
  clean: <BOOLEAN>,
},

```

```
output: {
  clean: true,
},

```

Enables or disables cleaning the output directory before building. The default is `false`.

#### `output.filename`[​](#outputfilename "Direct link to outputfilename")

- Syntax
- Example

```
output: {
  filename: <FILE>,
},

```

```
output: {
  filename: "bundle.js",
},

```

The output filename. The default is `"bundle.js"`.

#### `output.minimize`[​](#outputminimize "Direct link to outputminimize")

- Syntax
- Example

```
output: {
  minimize: <BOOLEAN>,
},

```

```
output: {
  minimize: false,
},

```

Enables or disables minimizing the bundle. Minimizing the bundle removes comments and whitespace, mangles variable names, and performs other optimizations. The default is `true`.

#### `output.path`[​](#outputpath "Direct link to outputpath")

- Syntax
- Example

```
output: {
  path: <DIRECTORY>,
},

```

```
output: {
  path: "dist",
},

```

Path to the output directory. The default is `"dist"`.

### `polyfills`[​](#polyfills "Direct link to polyfills")

- Syntax
- Example

```
polyfills: <BOOLEAN|OBJECT>

```

```
polyfills: {
  buffer: true,
  crypto: true,
  path: true,
}

```

Enables or disables providing polyfills for Node.js built-in modules. If set to `true`, all available polyfills are provided. The default is `false`.

You can also set this option to an object with specific polyfills set to `true`. See [the list of available polyfills](https://github.com/MetaMask/snaps/blob/51a1d04ea50c5c286262df1959ef0b1ced84b6e2/packages/snaps-cli/src/config.ts#L383-L416).

### `server`[​](#server "Direct link to server")

The development server configuration. The development server is used to test the Snap during development, using the [watch](/snaps/reference/cli/#w-watch) and [serve](/snaps/reference/cli/#s-serve) subcommands.

#### `server.enabled`[​](#serverenabled "Direct link to serverenabled")

- Syntax
- Example

```
server: {
  enabled: <BOOLEAN>,
},

```

```
server: {
  enabled: false,
},

```

Enables or disables the development server.

#### `server.port`[​](#serverport "Direct link to serverport")

- Syntax
- Example

```
server: {
  port: <PORT>,
},

```

```
server: {
  port: 9000,
},

```

The port to run the development server on. If set to `0`, a random port is used. The default is `8081`.

#### `server.root`[​](#serverroot "Direct link to serverroot")

- Syntax
- Example

```
server: {
  root: <DIRECTORY>,
},

```

```
server: {
  root: "snap",
},

```

The root directory of the development server. This is the directory that is served by the development server. The default is the current working directory.

### `sourceMap`[​](#sourcemap "Direct link to sourcemap")

- Syntax
- Example

```
sourceMap: <BOOLEAN|"inline">,

```

```
sourceMap: "inline",

```

Enables or disables generating a source map. If set to `"inline"`, the source map is inlined in the bundle. If set to `true` or not specified, it is written to a separate file. The default is `true`.

### `stats`[​](#stats "Direct link to stats")

The stats configuration, which controls the log output of the CLI.

#### `stats.buffer`[​](#statsbuffer "Direct link to statsbuffer")

- Syntax
- Example

```
stats: {
  buffer: <BOOLEAN>,
},

```

```
stats: {
  buffer: false,
},

```

Enables or disables showing a warning if the `Buffer` global is used but not provided. The `Buffer` global is not available in the Snaps runtime by default. To use `Buffer`, set [polyfills](#polyfills) to `true`.

The default is `true`.

#### `stats.builtIns`[​](#statsbuiltins "Direct link to statsbuiltins")

- Syntax
- Example

```
stats: {
  builtIns: <false|IGNORE_LIST>,
},

```

```
stats: {
  builtIns: {
    ignore: [
      // Built-in modules to ignore.
    ],
  },
},

```

Enables or disables checking for missing built-in modules.

Not specifying this option, or specifying an ignore list, enables checking for missing built-in modules. When enabled, the CLI shows a warning if a built-in is used but not provided. The Snaps CLI does not support Node.js built-ins out of the box. To use built-ins, set [polyfills](#polyfills) to `true`.

You can specify a list of built-ins to ignore when checking for missing built-ins. This is useful if the built-in is not actually used in the Snap, but is added by a dependency.

The default is an empty ignore list.

#### `stats.verbose`[​](#statsverbose "Direct link to statsverbose")

- Syntax
- Example

```
stats: {
  verbose: <BOOLEAN>,
},

```

```
stats: {
  verbose: true,
},

```

Enables or disables verbose logging. If set to `true`, the CLI logs more information. The default is `false`.
