import path from 'path' import fs from 'fs' import config from './lib/config.js' import Build from './lib/build.js' import { terser } from 'rollup-plugin-terser' import babel from 'rollup-plugin-babel' // Install source map support import { install } from 'source-map-support' install() // Add custom functionality const build = new Build() // Identify source file const input = path.resolve(`../${build.pkg.main || '../src/index.js'}`) // Configure metadata for the build process. const rootdir = config.nodeOutput // Main output directory let outdir = rootdir // Active output directory let configuration = [] // Rollup Configurations // 1. Clean prior builds fs.rmdirSync(rootdir, { recursive: true }) let terserCfg = config.terser terserCfg.module = true // terserCfg.mangle = { properties: true } // console.log(terserCfg) // Identify plugins const plugins = [ build.only('node'), build.applyVersion(build.version), babel({ presets: [['@babel/preset-env', { targets: { node: true } }]], plugins: [ ['@babel/plugin-proposal-class-properties', { loose: false }], ['@babel/plugin-proposal-private-methods', { loose: false }] ] }), terser(terserCfg) ] // 2. Build Node Production Package: Standard (Minified/Munged) const onwarn = build.ignoreCircularDependency('../src/command.js', '../src/shell.js', '../src/format.js', '../src/base.js') outdir += `/node-${build.name}` configuration.push({ input, plugins, onwarn, output: { banner: config.banner, file: `${outdir}/${build.name}-${build.version}.min.js`, format: 'esm', sourcemap: true }, external: config.external }) // 3. Build production legacy edition (commonjs/require format) configuration.push({ input, plugins, onwarn, output: { banner: config.banner, file: `${outdir}-legacy/${build.name}-${build.version}.min.js`, format: 'cjs', sourcemap: true }, external: config.external }) export default configuration