UNPKG

esbuild-plugin-compress

Version:
47 lines 3.47 kB
{ "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" }