From ac7b1de00eeb93581041573d77d072133e7d5f71 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Sun, 12 Jun 2022 21:49:34 +0200 Subject: [PATCH] chore(core): Migrated core from rollup to esbuild --- config/templates/package.dflt.json | 11 +-- packages/core/build.js | 33 +++++++ packages/core/package.json | 5 +- packages/core/src/index.js | 33 ++++--- packages/core/tests/attributes.test.js | 2 +- packages/core/tests/design.test.js | 2 +- packages/core/tests/hooks.test.js | 2 +- packages/core/tests/part.test.js | 2 +- packages/core/tests/path.test.js | 2 +- packages/core/tests/pattern.test.js | 2 +- packages/core/tests/point.test.js | 2 +- packages/core/tests/snap-proposal.js | 2 +- packages/core/tests/snippet.test.js | 2 +- packages/core/tests/store.test.js | 2 +- packages/core/tests/svg.test.js | 2 +- packages/core/tests/utils.test.js | 2 +- yarn.lock | 126 +++++++++++++++++++++++++ 17 files changed, 198 insertions(+), 34 deletions(-) create mode 100644 packages/core/build.js diff --git a/config/templates/package.dflt.json b/config/templates/package.dflt.json index ddeb01be6c1..a6710c6e8b0 100644 --- a/config/templates/package.dflt.json +++ b/config/templates/package.dflt.json @@ -14,10 +14,8 @@ "main": "dist/index.js", "module": "dist/index.mjs", "scripts": { - "watch": "rollup -c -w", - "start": "rollup -c -w", - "cibuild_step1": "rollup -c", - "build": "rollup -c", + "cibuild_step1": "node build.js", + "build": "node build.js", "testonly": "BABEL_ENV=production ../../node_modules/.bin/_mocha tests/*.test.js --require @babel/register", "publish": "npm run build && npm publish --access public" }, @@ -30,10 +28,7 @@ "tag": "latest" }, "engines": { - "node": ">=12.0.0", + "node": ">=14.0.0", "npm": ">=6" - }, - "rollup": { - "exports": "default" } } diff --git a/packages/core/build.js b/packages/core/build.js new file mode 100644 index 00000000000..58dc76434cd --- /dev/null +++ b/packages/core/build.js @@ -0,0 +1,33 @@ +/* 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'], + //minify: true, + sourcemap: true, +} + +// Different formats +const formats = { + esm: "dist/index.mjs", + cjs: "dist/index.js" +} + +// Let esbuild generate different formats +for (const [format, outfile] of Object.entries(formats)) esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + + diff --git a/packages/core/package.json b/packages/core/package.json index 68a60ff9e5f..ca9ab6134e7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -29,8 +29,8 @@ "module": "dist/index.mjs", "scripts": { "clean": "rimraf dist", - "build": "rollup -c", - "cibuild_step1": "rollup -c", + "build": "node build.js", + "cibuild_step1": "node build.js", "test": "BABEL_ENV=production nyc -x node_modules -x tests/fixtures -x bin-pack npx mocha tests/*.test.js", "pubtest": "npm publish --registry http://localhost:6662", "pubforce": "npm publish", @@ -48,6 +48,7 @@ "hooks": "^0.3.2" }, "devDependencies": { + "esbuild": "^0.14.43", "nyc": "^15.1.0" }, "files": [ diff --git a/packages/core/src/index.js b/packages/core/src/index.js index 19be24b60ff..a58ea419418 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -4,23 +4,32 @@ import Point from './point' import Path from './path' import Snippet from './snippet' import * as utils from './utils' -import pkg from '../package.json' +import { version } from '../package.json' -export default { - version: pkg.version, +/* + * Named exports will become the default in FreeSewing v3 + */ +export { + version, + Design, + Pattern, + Point, + Path, + Snippet, + utils, +} +// This is a helper for configuration files +export const pctBasedOn = utils.pctBasedOn + +/* + * Default exports will be removed in FreeSewing v3 + */ +export default { + version, Design, Pattern, Point, Path, Snippet, utils, - patterns: {}, - plugins: {}, - /** - * This pctBasedOn() method makes it easy to add the optional - * toAbs() and fromAbs() methods to percentage options config - * - * It was backported from the v3 roadmap into v2. - **/ - pctBasedOn: utils.pctBasedOn, } diff --git a/packages/core/tests/attributes.test.js b/packages/core/tests/attributes.test.js index 16860b3fb78..ff8f74ffc0f 100644 --- a/packages/core/tests/attributes.test.js +++ b/packages/core/tests/attributes.test.js @@ -1,5 +1,5 @@ const expect = require("chai").expect; -const Point = require("./dist").Point; +const Point = require("../dist/index.js").Point; const newAttr = () => new Point(0, 0).attributes; diff --git a/packages/core/tests/design.test.js b/packages/core/tests/design.test.js index c39fc9a634e..c4981369ab9 100644 --- a/packages/core/tests/design.test.js +++ b/packages/core/tests/design.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); it("Design constructor should return pattern constructor", () => { let design = new freesewing.Design({ diff --git a/packages/core/tests/hooks.test.js b/packages/core/tests/hooks.test.js index 5d53f6171a3..9e1a243ed4b 100644 --- a/packages/core/tests/hooks.test.js +++ b/packages/core/tests/hooks.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); it("Should contain all hooks", () => { let pattern = new freesewing.Pattern(); diff --git a/packages/core/tests/part.test.js b/packages/core/tests/part.test.js index d89a6ce9277..68da7bd8f93 100644 --- a/packages/core/tests/part.test.js +++ b/packages/core/tests/part.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); it("Svg constructor should initialize object", () => { let pattern = new freesewing.Pattern(); diff --git a/packages/core/tests/path.test.js b/packages/core/tests/path.test.js index 40305327679..8a9bae20b31 100644 --- a/packages/core/tests/path.test.js +++ b/packages/core/tests/path.test.js @@ -1,5 +1,5 @@ const expect = require("chai").expect; -const freesewing = require("./dist"); +const freesewing = require("../dist/index.js"); const round = freesewing.utils.round; it("Should offset a line", () => { diff --git a/packages/core/tests/pattern.test.js b/packages/core/tests/pattern.test.js index d63b77873c3..2cba8f45a81 100644 --- a/packages/core/tests/pattern.test.js +++ b/packages/core/tests/pattern.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); it("Pattern constructor should initialize object", () => { let pattern = new freesewing.Pattern({ diff --git a/packages/core/tests/point.test.js b/packages/core/tests/point.test.js index 76adcedfe4b..402e8f9daa0 100644 --- a/packages/core/tests/point.test.js +++ b/packages/core/tests/point.test.js @@ -1,5 +1,5 @@ const expect = require("chai").expect; -const freesewing = require("./dist"); +const freesewing = require("../dist/index.js"); const Point = freesewing.Point; const round = freesewing.utils.round; diff --git a/packages/core/tests/snap-proposal.js b/packages/core/tests/snap-proposal.js index b86fa69fb52..aa4614450c4 100644 --- a/packages/core/tests/snap-proposal.js +++ b/packages/core/tests/snap-proposal.js @@ -1,5 +1,5 @@ const expect = require("chai").expect; -const freesewing = require("./dist"); +const freesewing = require("../dist/index.js"); const measurements = { head: 400 } const toAbs = (val, { measurements }) => measurements.head * val diff --git a/packages/core/tests/snippet.test.js b/packages/core/tests/snippet.test.js index eb81f3a847d..f636dca83ff 100644 --- a/packages/core/tests/snippet.test.js +++ b/packages/core/tests/snippet.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); it("Should create a snippet", () => { let snip1 = new freesewing.Snippet("test", new freesewing.Point(12, 34)); diff --git a/packages/core/tests/store.test.js b/packages/core/tests/store.test.js index fd6db00c5cf..5fdac207f23 100644 --- a/packages/core/tests/store.test.js +++ b/packages/core/tests/store.test.js @@ -1,5 +1,5 @@ let expect = require("chai").expect; -let freesewing = require("./dist"); +let freesewing = require("../dist/index.js"); let pattern = new freesewing.Pattern(); let store = pattern.store; diff --git a/packages/core/tests/svg.test.js b/packages/core/tests/svg.test.js index 713fa70b024..7da10148ce2 100644 --- a/packages/core/tests/svg.test.js +++ b/packages/core/tests/svg.test.js @@ -3,7 +3,7 @@ const render = require("./fixtures/render.js"); const expect = require("chai").expect; const chai = require("chai"); chai.use(require("chai-string")); -const freesewing = require("./dist"); +const freesewing = require("../dist/index.js"); const round = freesewing.utils.round; it("Svg constructor should initialize object", () => { diff --git a/packages/core/tests/utils.test.js b/packages/core/tests/utils.test.js index db0d1de9f4e..db4f3436bca 100644 --- a/packages/core/tests/utils.test.js +++ b/packages/core/tests/utils.test.js @@ -1,5 +1,5 @@ const expect = require("chai").expect; -const freesewing = require("./dist"); +const freesewing = require("../dist/index.js"); const utils = freesewing.utils; const round = utils.round; diff --git a/yarn.lock b/yarn.lock index 72e7caf4421..3bc9c2e9db7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11243,6 +11243,132 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +esbuild-android-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz#59bf3edad6863c27aa92bbb5c1d83a9a5c981495" + integrity sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg== + +esbuild-android-arm64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz#0258704edf92ce2463af6d2900b844b5423bed63" + integrity sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA== + +esbuild-darwin-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz#72a47295678d4aa0656979baa8cf6d5c8c92656f" + integrity sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg== + +esbuild-darwin-arm64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz#5f5823170b8d85b888957f0794e186caac447aca" + integrity sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw== + +esbuild-freebsd-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz#e4a48b08181053837e6cd9bda19ae0af94d493b0" + integrity sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA== + +esbuild-freebsd-arm64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz#386e780d36c1dedf3a1cdab79e0bbacd873274e6" + integrity sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA== + +esbuild-linux-32@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz#040ed6b9ebf06d73acdf2acce7f1cd0c12fbc6a5" + integrity sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw== + +esbuild-linux-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz#8abbb7594ab6a008f2aae72d95d8a4fdc59d9000" + integrity sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw== + +esbuild-linux-arm64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz#4e8e9ce77cbf7efec65e79e512b3d2fbd2da398f" + integrity sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ== + +esbuild-linux-arm@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz#9e41ee5e099c0ffdfd150da154330c2c0226cc96" + integrity sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg== + +esbuild-linux-mips64le@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz#4b41f465a787f91cc4fe7dffa0dcabf655935a1a" + integrity sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA== + +esbuild-linux-ppc64le@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz#ca15934f5b46728dd9ac05270e783e7feaca9eaf" + integrity sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA== + +esbuild-linux-riscv64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz#70fce2b5a0605a67e58b5a357b0e00be1029836d" + integrity sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw== + +esbuild-linux-s390x@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz#318d03b4f4ccc7fa44ac7562121cf4a4529e477a" + integrity sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ== + +esbuild-netbsd-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz#86130ce204ef0162a96e863b55851efecc92f423" + integrity sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ== + +esbuild-openbsd-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz#0229dc2db2ded97b03bb93bba7646b30ffdf5d0d" + integrity sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg== + +esbuild-sunos-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz#17e316216eb9f1de25d52a9000356ae5b869e736" + integrity sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q== + +esbuild-windows-32@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz#a173757bc6dfd0f2656ff40b64f7f9290745778e" + integrity sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw== + +esbuild-windows-64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz#c447b23126aad158c4fe6a394342cafd97926ed1" + integrity sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw== + +esbuild-windows-arm64@0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz#3caed1b430d394d7a7836407b9d36c4750246e76" + integrity sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw== + +esbuild@^0.14.43: + version "0.14.43" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.43.tgz#c227d585c512d3e0f23b88f50b8e16501147f647" + integrity sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA== + optionalDependencies: + esbuild-android-64 "0.14.43" + esbuild-android-arm64 "0.14.43" + esbuild-darwin-64 "0.14.43" + esbuild-darwin-arm64 "0.14.43" + esbuild-freebsd-64 "0.14.43" + esbuild-freebsd-arm64 "0.14.43" + esbuild-linux-32 "0.14.43" + esbuild-linux-64 "0.14.43" + esbuild-linux-arm "0.14.43" + esbuild-linux-arm64 "0.14.43" + esbuild-linux-mips64le "0.14.43" + esbuild-linux-ppc64le "0.14.43" + esbuild-linux-riscv64 "0.14.43" + esbuild-linux-s390x "0.14.43" + esbuild-netbsd-64 "0.14.43" + esbuild-openbsd-64 "0.14.43" + esbuild-sunos-64 "0.14.43" + esbuild-windows-32 "0.14.43" + esbuild-windows-64 "0.14.43" + esbuild-windows-arm64 "0.14.43" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"