Skip to content

atom-community/terser-config-atomic

Repository files navigation

terser-config-atomic

The Terser configuration used in atom-community.

Installation

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.

Usage

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.

Options

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

Modifying the config

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