You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							107 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							107 lines
						
					
					
						
							2.6 KiB
						
					
					
				| # rollup-plugin-terser [![Travis Build Status][travis-img]][travis]
 | |
| 
 | |
| [travis-img]: https://travis-ci.org/TrySound/rollup-plugin-terser.svg
 | |
| [travis]: https://travis-ci.org/TrySound/rollup-plugin-terser
 | |
| 
 | |
| [Rollup](https://github.com/rollup/rollup) plugin to minify generated es bundle. Uses [terser](https://github.com/fabiosantoscode/terser) under the hood.
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```sh
 | |
| yarn add rollup-plugin-terser --dev
 | |
| # Or with npm:
 | |
| npm i rollup-plugin-terser --save-dev
 | |
| ```
 | |
| 
 | |
| _Note: this package requires rollup@0.66 and higher (including rollup@2.0.0)_
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ```js
 | |
| import { rollup } from "rollup";
 | |
| import { terser } from "rollup-plugin-terser";
 | |
| 
 | |
| rollup({
 | |
|   input: "main.js",
 | |
|   plugins: [terser()],
 | |
| });
 | |
| ```
 | |
| 
 | |
| ## Why named export?
 | |
| 
 | |
| 1. Module is a namespace. Default export often leads to function/component per file dogma and makes code less maintainable.
 | |
| 2. Interop with commonjs is broken in many cases or hard to maintain.
 | |
| 3. Show me any good language with default exports. It's historical javascriptism.
 | |
| 
 | |
| ## Options
 | |
| 
 | |
| > ⚠️ **Caveat:** any function used in options object cannot rely on its surrounding scope, since it is executed in an isolated context.
 | |
| 
 | |
| ```js
 | |
| terser(options);
 | |
| ```
 | |
| 
 | |
| `options` - [terser API options](https://github.com/fabiosantoscode/terser#minify-options)
 | |
| 
 | |
| Note: some terser options are set by the plugin automatically:
 | |
| 
 | |
| - `module: true` is set when `format` is `esm` or `es`
 | |
| - `toplevel: true` is set when `format` is `cjs`
 | |
| 
 | |
| `options.numWorkers: number`
 | |
| 
 | |
| Amount of workers to spawn. Defaults to the number of CPUs minus 1.
 | |
| 
 | |
| ## Examples
 | |
| 
 | |
| ### Using as output plugin
 | |
| 
 | |
| ```js
 | |
| // rollup.config.js
 | |
| import { terser } from "rollup-plugin-terser";
 | |
| 
 | |
| export default {
 | |
|   input: "index.js",
 | |
|   output: [
 | |
|     { file: "lib.js", format: "cjs" },
 | |
|     { file: "lib.min.js", format: "cjs", plugins: [terser()] },
 | |
|     { file: "lib.esm.js", format: "esm" },
 | |
|   ],
 | |
| };
 | |
| ```
 | |
| 
 | |
| ### Comments
 | |
| 
 | |
| If you'd like to preserve comments (for licensing for example), then you can specify a function to do this like so:
 | |
| 
 | |
| ```js
 | |
| terser({
 | |
|   output: {
 | |
|     comments: function (node, comment) {
 | |
|       var text = comment.value;
 | |
|       var type = comment.type;
 | |
|       if (type == "comment2") {
 | |
|         // multiline comment
 | |
|         return /@preserve|@license|@cc_on/i.test(text);
 | |
|       }
 | |
|     },
 | |
|   },
 | |
| });
 | |
| ```
 | |
| 
 | |
| Alternatively, you can also choose to keep all comments (e.g. if a licensing header has already been prepended by a previous rollup plugin):
 | |
| 
 | |
| ```js
 | |
| terser({
 | |
|   output: {
 | |
|     comments: "all",
 | |
|   },
 | |
| });
 | |
| ```
 | |
| 
 | |
| See [Terser documentation](https://github.com/fabiosantoscode/terser#terser) for further reference.
 | |
| 
 | |
| # License
 | |
| 
 | |
| MIT © [Bogdan Chadkin](mailto:trysound@yandex.ru)
 |