diff --git a/packages/plugin-scalebox/build.js b/packages/plugin-scalebox/build.js new file mode 100644 index 00000000000..543259e899a --- /dev/null +++ b/packages/plugin-scalebox/build.js @@ -0,0 +1,43 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.json') + +// Create banner based on package info +const banner = `/** + * ${pkg.name} | v${pkg.version} + * ${pkg.description} + * (c) ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + */` + +// Shared esbuild options +const options = { + banner: { js: banner }, + bundle: true, + entryPoints: ['src/index.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } +})() diff --git a/packages/plugin-scalebox/package.json b/packages/plugin-scalebox/package.json index 53133a3f3c5..2b7fd2357fa 100644 --- a/packages/plugin-scalebox/package.json +++ b/packages/plugin-scalebox/package.json @@ -28,13 +28,12 @@ "module": "dist/index.mjs", "scripts": { "clean": "rimraf dist", - "build": "rollup -c", - "cibuild_step1": "rollup -c", + "build": "node build.js", + "mbuild": "NO_MINIFY=1 node build.js", + "vbuild": "VERBOSE=1 node build.js", + "cibuild_step1": "node build.js", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", - "pubtest": "npm publish --registry http://localhost:6662", - "pubforce": "npm publish", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "start": "rollup -c -w", "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'" }, @@ -46,13 +45,7 @@ "mocha": "^9.1.1", "chai": "^4.2.0", "@babel/core": "^7.11.0", - "@babel/register": "^7.10.5", - "rollup": "^2.50.6", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.0.0", - "rollup-plugin-peer-deps-external": "^2.2.4" + "@babel/register": "^7.10.5" }, "files": [ "dist/*", @@ -64,10 +57,7 @@ "tag": "latest" }, "engines": { - "node": ">=12.0.0", + "node": ">=14.0.0", "npm": ">=6" - }, - "rollup": { - "exports": "default" } } diff --git a/packages/plugin-scalebox/rollup.config.js b/packages/plugin-scalebox/rollup.config.js deleted file mode 100644 index 83bc5ef0eec..00000000000 --- a/packages/plugin-scalebox/rollup.config.js +++ /dev/null @@ -1,29 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import json from '@rollup/plugin-json' -import peerDepsExternal from 'rollup-plugin-peer-deps-external' -import { name, version, description, author, license, main, module, rollup } from './package.json' - -const banner = `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` -const output = [ - { - banner, - file: main, - format: 'cjs', - sourcemap: true, - exports: rollup.exports, - }, -] -if (typeof module !== 'undefined') - output.push({ - banner, - file: module, - format: 'es', - sourcemap: true, - }) - -export default { - input: 'src/index.js', - output, - plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], -}