esbuild-plugin-compress
Version:
ESBuild plugin for output compression
47 lines • 3.47 kB
JSON
{
"name": "esbuild-plugin-compress",
"version": "1.0.1",
"description": "ESBuild plugin for output compression",
"keywords": [
"esbuild",
"ESBuild",
"compress",
"plugin"
],
"homepage": "https://github.com/LinbuduLab/esbuild-plugins/tree/master/packages/esbuild-plugin-compress#readme",
"changelog": "https://github.com/LinbuduLab/esbuild-plugins/blob/main/packages/esbuild-plugin-compress/CHANGELOG.md",
"bugs": {
"url": "https://github.com/LinbuduLab/esbuild-plugins/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/LinbuduLab/esbuild-plugins.git"
},
"license": "MIT",
"author": "Linbudu <linbudu599@gmail.com> (https://github.com/linbudu599)",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
}
},
"dependencies": {
"chalk": "^4.1.2",
"fs-extra": "^10.0.0",
"micromatch": "^4.0.5"
},
"peerDependencies": {
"esbuild": ">= 0.14.0"
},
"devDependencies": {
"@types/micromatch": "^4.0.2"
},
"scripts": {
"dev": "tsup src/index.ts --watch --dts --format esm",
"build": "rm -rf dist && tsup src/index.ts --config ../../tsup.config.ts"
},
"readme": "# esbuild-plugin-compress\n\nESBuild plugin for output compression (gzip/brotli).\n\n- [Author](https://github.com/linbudu599)\n- [GitHub Repo](https://github.com/LinbuduLab/esbuild-plugins/tree/master/packages/esbuild-plugin-compress#readme)\n- [Changelog](https://github.com/LinbuduLab/esbuild-plugins/blob/main/packages/esbuild-plugin-compress/CHANGELOG.md)\n\n## Usage\n\n```bash\nnpm install esbuild-plugin-compress --save-dev\npnpm install esbuild-plugin-compress --save-dev\nyarn add esbuild-plugin-compress --save-dev\n```\n\n**You must set `write` options to be false to use this plugin, as ESBuild only expose `outputFile` info when setting false `write` options.**\n\n```typescript\nimport { build } from 'esbuild';\nimport { compress } from 'esbuild-plugin-compress';\n\nimport type { BuildOptions } from 'esbuild';\n\nconst baseOptions: BuildOptions = {\n entryPoints: ['./src/index.ts'],\n outfile: './build/index.js',\n};\n\nconst compressOptions: BuildOptions = {\n ...baseOptions,\n write: false,\n plugins: [\n ...(baseOptions.plugins ?? []),\n compress({\n outputDir: 'dist',\n exclude: ['**/*.map'],\n }),\n ],\n};\n\nbuild(baseOptions).catch(() => process.exit(1));\n\nbuild(compressOptions).catch(() => process.exit(1));\n```\n\n## Configurations\n\n```typescript\nexport interface CompressOptions {\n /**\n * enable gzip compress\n * @default true\n */\n gzip?: boolean;\n\n /**\n * gzip compress options passed to zlib.gzipSync\n */\n gzipOptions?: ZlibOptions;\n\n /**\n * enable brotli compress\n * @default true\n */\n brotli?: boolean;\n\n /**\n * brotli compress options passed to zlib.brotliCompressSync\n */\n brotliOptions?: BrotliOptions;\n /**\n * should write origin file\n * @default true\n */\n emitOrigin?: boolean;\n\n /**\n * the output of compressed file\n * if not specified, will resolve from outdir or outfile options\n */\n outputDir?: string;\n\n /**\n * exclude files from compression\n * works as micromatch.isMatch(outputPath, excludePatterns) under the hood\n * @default []\n */\n exclude?: string | string[];\n}\n```\n"
}