The Terser configuration used in atom-community.
npm install --save-dev terser-config-atomic
This package also needs `Terser`.
Either add the following to your .npmrc
if using pnpm
to hoist the Terser bundled with the config
public-hoist-pattern[]=*
Or install terser
yourself in your devDependencies
.
If using npm
, the terser dependency is hoisted automatically.
If you use Parcel
or rullup-plugin-atomic
, Terser
is already included.
Create a .terserrc.js
with the following content
.terserrc.js
module.exports = require("terser-config-atomic")
The config is adapted based on NODE_ENV
, so make sure to run your scripts with the correct NODE_ENV
:
- test:
cross-env NODE_ENV=test your_test_script
- development:
cross-env NODE_ENV=development your_dev_script
- production:
cross-env NODE_ENV=production your_prod_script
Note: cross-env
is an npm package that you need to install.
You can import the builder function to create a custom config:
import { buildTerserOptions } from "terser-config-atomic/dist/builder.js"
module.exports = buildTerserOptions(process.env.NODE_ENV, process.env.BABEL_ENV)
The builder function:
/**
* Get the terser options for the given environment.
*
* @param NODE_ENV - The Node environment (defaults to "production").
* @param BABEL_ENV - The Babel environment (defaults to NODE_ENV).
* @param unsafeCompress - Whether to use unsafe compression options (defaults to false).
*/
export function buildTerserOptions(
NODE_ENV: string = "production",
BABEL_ENV: string | undefined = undefined,
unsafeCompress: boolean = false,
)
To change the config use the following pattern:
.terserrc.js
const TerserAtomic = require("terser-config-atomic")
module.exports = {
...TerserAtomic,
// your config here
}
To change the deep properties such as compress
, use the following pattern as an example:
const TerserAtomic = require("terser-config-atomic")
module.exports = {
...TerserAtomic,
compress: {
...TerserAtomic.compress,
ecma: 2020,
},
}