UNPKG

kt-extendscript-builder

Version:

Vite based builder for transpile TypeScript to ExtendScript

110 lines (109 loc) 4.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRollupConfig = createRollupConfig; const PonifillCollector_1 = require("../utils/PonifillCollector"); const rollup_1 = require("rollup"); const plugin_node_resolve_1 = __importDefault(require("@rollup/plugin-node-resolve")); const plugin_babel_1 = __importDefault(require("@rollup/plugin-babel")); const vite_cep_plugin_1 = require("vite-cep-plugin"); const plugin_json_1 = __importDefault(require("@rollup/plugin-json")); const plugin_terser_1 = __importDefault(require("@rollup/plugin-terser")); const rollupRemoveExports_1 = require("../plugins/rollupRemoveExports"); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); function createRollupConfig(options = {}) { const input = options.input; const output = options.output; const extensions = ['.js', '.ts', '.tsx']; const ponyfillCollector = new PonifillCollector_1.PonyfillCollector(); const ponyfills = ponyfillCollector.collect(options.ponyfills); const GLOBAL_THIS = 'thisObj'; console.log(`Configuring Rollup for ExtendScript: ${input} -> ${output}`); const conditionalPlugins = []; if (options.uglify) { conditionalPlugins.push((0, plugin_terser_1.default)({ compress: { conditionals: false, drop_console: options.mode === 'production' }, output: { comments: false } })); } const config = { input: input, treeshake: true, output: { file: output, // format: 'cjs' }, plugins: [ (0, plugin_json_1.default)(), (0, plugin_node_resolve_1.default)({ extensions, preferBuiltins: false }), (0, plugin_babel_1.default)({ extensions, minified: options.minify, babelrc: false, babelHelpers: 'bundled', presets: [ [ '@babel/preset-env', { targets: { esmodules: 'commonjs', ie: '9' } } ], '@babel/preset-typescript' ], plugins: [ '@babel/plugin-proposal-class-properties', '@babel/plugin-syntax-dynamic-import', ['@babel/plugin-transform-classes', { loose: true }] ] }), (0, vite_cep_plugin_1.jsxPonyfill)(ponyfills), (0, vite_cep_plugin_1.jsxInclude)({ iife: true, globalThis: GLOBAL_THIS }), (0, rollupRemoveExports_1.rollupRemoveExports)(), ...conditionalPlugins ] }; async function build() { try { // Ensure output directory exists const outputDir = path_1.default.dirname(output); if (!fs_1.default.existsSync(outputDir)) { fs_1.default.mkdirSync(outputDir, { recursive: true }); } const bundle = await (0, rollup_1.rollup)(config); await bundle.write(config.output); await bundle.close(); console.log(`ExtendScript build completed: ${output}`); } catch (error) { console.error('Error in ExtendScript build:', error); // Instead of throwing the error, we just log it in tests if (process.env.NODE_ENV !== 'test') { throw error; } } } function watchRollup() { const watcher = (0, rollup_1.watch)(config); return watcher; } return { build, watch: watchRollup, config }; }