Bundler Options 🏗️
fast-alfred
bundles the files based on the configuration file from the root of your project.
You can configure any bundler option via the configuration file on your workspace root,
named .fast-alfred.config.cjs
.
Available Options
TIP ⚡
fast-alfred
has a default configuration that should work for most of the workflows.
See the available options below:
productionScripts
By default, fast-alfred
assumes that all the production files, the files that you're calling in the Workflow itself, are located in the src/main
directory.
You can change that by the productionScripts
property, which holds an array of glob patterns.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
productionScripts: ['src/*.ts'], // Should contain all TypeScript files under the `src` directory
},
}
2
3
4
5
6
7
8
assets
By default, fast-alfred
would bundle the fast-alfred
runtime, run-node.sh
.
You can add more assets to be bundled by adding paths into the assets
property
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
assets: ['src/some-path/*'], // All files under the `src/some-path` directory will be bundled as assets
},
}
2
3
4
5
6
7
8
rootAssets
By default, fast-alfred
would bundle a few files from the root of the project, like the package.json
and the README.md
.
You can add more assets to be bundled at the root, instead of the assets
directory, by adding paths to the rootAssets
property.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
rootAssets: ['List Filter Images'], // All files under the `List Filter Images` directory, as well as the directory itself, would be bundled as assets
},
}
2
3
4
5
6
7
8
assetsDir
By default, fast-alfred
would place all assets under the assets
directory in the output directory.
You can change that by setting the assetsDir
property.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
assetsDir: 'resources', // All assets will be placed under the `resources` directory in the output directory
},
}
2
3
4
5
6
7
8
targetDir
By default, fast-alfred
would place all the output files under the esbuild
directory.
You can change that by setting the targetDir
property.
CI / CD Usage 🚨
If you're using the fast-alfred
CI / CD template, updating the targetDir
property should be handled automatically.
The only thing you should update is the .releaserc
asset path.
Make sure npx fast-alfred pack
script works correctly.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
targetDir: 'dist', // All output files will be placed under the `dist` directory
},
}
2
3
4
5
6
7
8
esmHelpers
By default, fast-alfred
aims to be written in the cjs
Module format.
If your package is using the esm
format, AKA, having "type": "module"
in the package.json
, you should enable the esmHelpers
property.
Warning ⚠️
In case your package is written in cjs
, enabling this option would break your build.
Note that you should also set the outputFormat
property to esm
to output the files in the ES Module format.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
esmHelpers: true, // Enable compatibility for CommonJS packages
},
}
2
3
4
5
6
7
8
outputFormat
By default, fast-alfred
would output the files in the cjs
format.
You can change that by setting the outputFormat
property.
TIP ⚡
If your package.json
has "type": "module"
, you should output the files in the esm
format.
Otherwise, you should keep it in the cjs
format.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
outputFormat: 'esm', // Output files in the ES Module format
},
}
2
3
4
5
6
7
8
minify
By default, fast-alfred
would not minify the output files.
It might be useful to enable this option if you want to reduce the bundle size.
TIP ⚡
By official Alfred documentation, you should not minify the output files, so users would be able to read the code.
See more details in here.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
minify: true, // Enable minification
},
}
2
3
4
5
6
7
8
treeShaking
By default, fast-alfred
would tree-shake the output files. That way, only the necessary code will be included in the final bundle.
You can disable this feature by setting the treeShaking
property to false
.
Warning ⚠️
Disabling tree shaking might increase the bundle size.
You should only disable tree shaking if you're facing issues with the output bundle.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
treeShaking: false, // Disable tree shaking
},
}
2
3
4
5
6
7
8
overrideEsbuildOptions
fast-alfred
uses esbuild
under the hood to bundle the files.
You can override the esbuild
options by setting the overrideEsbuildOptions
property.
Warning ⚠️
You should be careful while overriding the esbuild
options.
All the options provided here would be overridden, if specified in this property.
You can find the available options in the esbuild documentation.
Example
/**
* @type {import('fast-alfred').FastAlfredConfig}
*/
module.exports = {
bundlerOptions: {
overrideEsbuildOptions: {
target: 'esnext', // Override the target option
},
},
}
2
3
4
5
6
7
8
9
10