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
.