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>,

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: <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>,

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


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 features.


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


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: {
images: <BOOLEAN>,

Enables or disables image support. The default is true.


input: <FILE>,

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


The Snap manifest file configuration.


manifest: {
path: <FILE>,

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


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.


The output configuration.


output: {
clean: <BOOLEAN>,

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


output: {
filename: <FILE>,

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


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: <DIRECTORY>,

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


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.


The development server configuration. The development server is used to test the Snap during development, using the watch and serve subcommands.


server: {
enabled: <BOOLEAN>,

Enables or disables the development server.


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: <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: <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.


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


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

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