UNPKG

@nfps.dev/rollup-plugin-microweb

Version:

Rollup plugin for bundling and minifying NFP TypeScript projects

95 lines (94 loc) 3.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.microWeb = void 0; const plugin_node_resolve_1 = __importDefault(require("@rollup/plugin-node-resolve")); const plugin_terser_1 = __importDefault(require("@rollup/plugin-terser")); const plugin_typescript_1 = __importDefault(require("@rollup/plugin-typescript")); const rollup_plugin_filesize_1 = __importDefault(require("rollup-plugin-filesize")); const uglify_js_1 = __importDefault(require("uglify-js")); function microWeb(gc_microweb = {}) { return [ // node-style resolution (0, plugin_node_resolve_1.default)({ browser: true, }), // enable typescript (0, plugin_typescript_1.default)({ sourceMap: true, include: gc_microweb.include || ['src/**/*.ts'], ...gc_microweb.exclude ? { exclude: gc_microweb.exclude } : {}, ...gc_microweb.tsconfig ? { tsconfig: gc_microweb.tsconfig } : {}, ...gc_microweb.typescript ? { typescript: gc_microweb.typescript } : {}, ...gc_microweb.compilerOptions ? { compilerOptions: gc_microweb.compilerOptions } : {}, }), // minify using terser ...'development' !== process.env['NODE_ENV'] ? [ (0, plugin_terser_1.default)({ compress: { passes: 3, ecma: 2020, // toplevel: true, keep_fargs: false, unsafe_arrows: true, // unsafe_comps: true, unsafe_methods: true, unsafe_proto: true, unsafe_regexp: true, // this can cause an error when web crypto API expects a boolean // booleans_as_integers: true, pure_funcs: [ 'buffer', 'sha256', 'sha256d', 'sha384', 'sha512', 'hmac', 'text_to_buffer', 'buffer_to_text', 'base64_to_text', 'text_to_base64', 'json_to_buffer', 'buffer_to_json', 'buffer_to_hex', 'hex_to_buffer', 'buffer_to_base64', 'base64_to_buffer', 'string8_to_buffer', 'buffer_to_string8', 'buffer_to_base93', 'base93_to_buffer', 'buffer_to_base58', 'base58_to_buffer', 'concat', 'concat2', ], }, mangle: { toplevel: true, }, format: { wrap_func_args: false, }, }), // terser is not perfect on its own, use uglify to clean up remainder { name: 'uglify', generateBundle: { handler(gc_bundle, h_bundle, b_write) { for (const [, g_bundle] of Object.entries(h_bundle)) { if ('chunk' === g_bundle.type) { g_bundle.code = uglify_js_1.default.minify(g_bundle.code).code; } } }, }, }, // display the bundled sizes (0, rollup_plugin_filesize_1.default)(), ] : [], ]; } exports.microWeb = microWeb;