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.
bundler
- Syntax
 - Example
 
bundler: <BUNDLER>,
bundler: "webpack",
The bundler to use.
The options are "webpack" and "browserify".
The default is "webpack".
We recommend using the Webpack bundler. The Browserify-based configuration is deprecated and will be removed in the future. This reference describes the configuration options for Webpack. For Browserify, see the legacy options.
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.
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,
which can be accessed using process.env.
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 features.
These features are not stable, and might change in the future.
experimental.wasm
- 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.images
- Syntax
 - Example
 
features: {
  images: <BOOLEAN>,
},
features: {
  images: false,
},
Enables or disables image support.
The default is true.
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
The Snap manifest file configuration.
manifest.path
- Syntax
 - Example
 
manifest: {
  path: <FILE>,
},
manifest: {
  path: "snap.manifest.json",
},
Path to the Snap manifest file.
The default is "snap.manifest.json".
manifest.update
- 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
The output configuration.
output.clean
- Syntax
 - Example
 
output: {
  clean: <BOOLEAN>,
},
output: {
  clean: true,
},
Enables or disables cleaning the output directory before building.
The default is false.
output.filename
- Syntax
 - Example
 
output: {
  filename: <FILE>,
},
output: {
  filename: "bundle.js",
},
The output filename.
The default is "bundle.js".
output.minimize
- 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
- Syntax
 - Example
 
output: {
  path: <DIRECTORY>,
},
output: {
  path: "dist",
},
Path to the output directory.
The default is "dist".
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.
server
The development server configuration.
The development server is used to test the Snap during development, using the
watch and serve subcommands.
server.enabled
- Syntax
 - Example
 
server: {
  enabled: <BOOLEAN>,
},
server: {
  enabled: false,
},
Enables or disables the development server.
server.port
- 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
- 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
- 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
The stats configuration, which controls the log output of the CLI.
stats.buffer
- 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 to true.
The default is true.
stats.builtIns
- 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 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
- 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.