From fb858eb45b76e5b7e8526e31768e988e530782ad Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 14 Jun 2022 13:09:18 +0200 Subject: [PATCH] chore(utils): Migrated to esbuild & removed legacy devenv --- packages/utils/build.js | 68 +++++++++++++++++++++++++++++++++ packages/utils/package.json | 18 ++++----- packages/utils/rollup.config.js | 38 ------------------ 3 files changed, 75 insertions(+), 49 deletions(-) create mode 100644 packages/utils/build.js delete mode 100644 packages/utils/rollup.config.js diff --git a/packages/utils/build.js b/packages/utils/build.js new file mode 100644 index 00000000000..d5cb127e64c --- /dev/null +++ b/packages/utils/build.js @@ -0,0 +1,68 @@ +/* This script will build the various components 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/backend/index.js', + './src/camelCase/index.js', + './src/capitalize/index.js', + './src/cloneObject/index.js', + './src/convertSize/index.js', + './src/defaultGist/index.js', + './src/defaultSa/index.js', + './src/formatImperial/index.js', + './src/formatMm/index.js', + './src/isDegMeasurement/index.js', + './src/measurementAsMm/index.js', + './src/measurementDiffers/index.js', + './src/neckstimate/index.js', + './src/optionDefault/index.js', + './src/optionType/index.js', + './src/roundMm/index.js', + './src/roundMmDown/index.js', + './src/roundMmUp/index.js', + './src/sliderStep/index.js', + './src/smallestImperialStep/index.js', + './src/storage/index.js', + './src/tiler/index.js', + './src/validateEmail/index.js', + './src/validateTld/index.js', + ], + external: [ + "@freesewing", + "axios", + ], + format: 'cjs', + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + loader: { '.js': 'jsx' }, + outdir: './', + sourcemap: true, +} + + +// Let esbuild do its thing +// Only generating CJS since this will be dropped in v3 +let result +(async () => { + result = await esbuild + .build(options) + .catch(() => process.exit(1)) + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } +})() diff --git a/packages/utils/package.json b/packages/utils/package.json index f67634666c7..4bc927165b7 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -24,14 +24,13 @@ ], "main": "dist/index.js", "scripts": { - "clean": "rimraf dist", - "build": "rollup -c", - "cibuild_step1": "rollup -c", + "clean": "rimraf backend && rimraf camelCase && rimraf capitalize && rimraf cloneObject && rimraf convertSize && rimraf defaultGist && rimraf defaultSa && rimraf formatImperial && rimraf formatMm && rimraf isDegMeasurement && rimraf measurementAsMm && rimraf measurementDiffers && rimraf neckstimate && rimraf optionDefault && rimraf optionType && rimraf roundMm && rimraf roundMmDown && rimraf roundMmUp && rimraf sliderStep && rimraf smallestImperialStep && rimraf storage && rimraf tiler && rimraf validateEmail && rimraf validateTld", + "build": "node build.js", + "mbuild": "NO_MINIFY=1 node build.js", + "vbuild": "VERBOSE=1 node build.js", + "cibuild_step1": "node build.js", "test": "echo \"utils: No tests configured. Perhaps you'd like to do this?\" && exit 0", - "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" + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -" }, "peerDependencies": { "tlds": "^1.221.1", @@ -70,10 +69,7 @@ "tag": "latest" }, "engines": { - "node": ">=12.0.0", + "node": ">=14.0.0", "npm": ">=6" - }, - "rollup": { - "exports": "default" } } diff --git a/packages/utils/rollup.config.js b/packages/utils/rollup.config.js deleted file mode 100644 index 96d54a94fa7..00000000000 --- a/packages/utils/rollup.config.js +++ /dev/null @@ -1,38 +0,0 @@ -import babel from '@rollup/plugin-babel' -import resolve from '@rollup/plugin-node-resolve' -import json from '@rollup/plugin-json' -import peerDepsExternal from 'rollup-plugin-peer-deps-external' -import { name, version, description, author, license } from './package.json' -import utils from './src/index.js' - -const banner = `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` - -const createConfig = (util, module) => { - return { - input: `./src/${util + '/'}index.js`, - output: { - banner, - file: `./${util}/index` + (module ? '.mjs' : '.js'), - format: module ? 'es' : 'cjs', - sourcemap: true, - exports: 'default' - }, - plugins: [ - babel({ - exclude: 'node_modules/**', - babelHelpers: 'bundled' - }), - peerDepsExternal(), - resolve({ modulesOnly: true }), - json(), - ] - } -} - -const config = [] -for (let util of utils) { - config.push(createConfig(util, false)) - // Using .mjs causes problems. See #1079 - //config.push(createConfig(util, true)); -} -export default config