Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/atom-community/terser-config-atomic

Terser config used in Atom community
https://github.com/atom-community/terser-config-atomic

minify parcel rollup terser terser-config terser-preset uglify uglifyjs webpack

Last synced: 27 days ago
JSON representation

Terser config used in Atom community

Awesome Lists containing this project

README

        

# 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

```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`](https://www.npmjs.com/package/cross-env) is an npm package that you need to install.

## Options

You can import the builder function to create a custom config:

```ts
import { buildTerserOptions } from "terser-config-atomic/dist/builder.js"
module.exports = buildTerserOptions(process.env.NODE_ENV, process.env.BABEL_ENV)
```

The builder function:

```ts
/**
* 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

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

```js
const TerserAtomic = require("terser-config-atomic")

module.exports = {
...TerserAtomic,
compress: {
...TerserAtomic.compress,
ecma: 2020,
},
}
```