Skip to main content

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

bundler: <BUNDLER>,

The bundler to use. The options are "webpack" and "browserify". The default is "webpack".

important

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

customizeWebpackConfig: <FUNCTION>,

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

environment: <ENVIRONMENT>,

The environment configuration. You can use this to set environment variables for the Snap, which can be accessed using process.env.

evaluate

evaluate: <BOOLEAN>,

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.

caution

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

experimental.wasm

experimental: {
wasm: <BOOLEAN>,
},

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

features: {
images: <BOOLEAN>,
},

Enables or disables image support. The default is true.

input

input: <FILE>,

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

manifest: {
path: <FILE>,
},

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

manifest.update

manifest: {
update: <BOOLEAN>,
},

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

output: {
clean: <BOOLEAN>,
},

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

output.filename

output: {
filename: <FILE>,
},

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

output.minimize

output: {
minimize: <BOOLEAN>,
},

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

output: {
path: <DIRECTORY>,
},

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

polyfills

polyfills: <BOOLEAN|OBJECT>

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

server: {
enabled: <BOOLEAN>,
},

Enables or disables the development server.

server.port

server: {
port: <PORT>,
},

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

server.root

server: {
root: <DIRECTORY>,
},

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: <BOOLEAN|"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

stats: {
buffer: <BOOLEAN>,
},

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

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

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

stats: {
verbose: <BOOLEAN>,
},

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