diff --git a/.prettierignore b/.prettierignore index 18b8b4ed929..ec967556865 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,8 +4,3 @@ *.yml *.md - -# More auto-generated code -packages/*/example/public/* -packages/*/example/src/* -packages/*/tests/*.js diff --git a/CHANGELOG.md b/CHANGELOG.md index a91b3219862..ccd5e05183a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,514 @@ ## Unreleased +### aaron + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### albert + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bee + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bella + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### benjamin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bent + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### breanna + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### brian + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### bruce + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### carlita + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### carlton + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### cathrin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### charlie + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### components + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### config-helpers + +#### Added + + - This new package replaces the previous snapseries package and adds extra helper methods for pattern config such as `pctBasedOn()` which was previously exported by core + +### core + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + - The `pctBasedOn()` helper method for pattern config was moved to config-helpers We did not make this a breaking change since it's only used internally. + +### cornelius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### diana + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### examples + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### florence + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### florent + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### gatsby-remark-jargon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### holmes + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### hortensia + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### huey + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + ### hugo +#### Changed + + - Migrated from Rollup to Esbuild for all builds + #### Fixed - Fix incorrect seam allowance Closes [#2208](https://github.com/freesewing/freesewing/issues/2208) +### i18n + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added missing lab namespace for English + +### jaeger + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### legend + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### lucy + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### lunetius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### models + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### mui-theme + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### paco + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### pattern-info + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### penelope + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-banner + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bartack + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bundle + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-bust + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-buttons + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-cutonfold + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-dimension + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-export-dxf + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-flip + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-gore + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-grainline + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-i18n + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-logo + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-measurements + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-mirror + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-notches + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-round + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-scalebox + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-sprinkle + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-svgattr + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-theme + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-title + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-validate + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugin-versionfree-svg + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### plugintest + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### remark-jargon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### rendertest + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### sandy + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### shin + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### simon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + +### simone + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added the frontdarts option back after it was (accidentally) removed + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + +### sven + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tamiko + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### teagan + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +#### Fixed + + - Added missing name to config file + +### theo + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tiberius + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### titan + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### trayvon + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### tutorial + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### ursula + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### utils + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### wahid + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### walburga + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### waralee + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + +### yuri + +#### Changed + + - Migrated from Rollup to Esbuild for all builds + ## 2.20.8 (2022-05-21) @@ -1174,12 +1676,6 @@ - Support drafting of non-human measurements (dolls & giants) Closes [#1318](https://github.com/freesewing/freesewing/issues/1318) - Fix issue with armhole introduced with the S3 options in Brian Closes -### snapseries - -#### Added - - - Initial release of `@freesewing/snapseries` wich holds commonly used series of snap values for percentage options - ### theo #### Changed diff --git a/README.md b/README.md index ad3e6d47a78..8f942de98db 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ All Contributors


Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke

πŸ’» πŸ“– +
Enoch Riese

πŸ’»
EvEkSwed

🌍
Fantastik-Maman

🌍
Forrest O.

πŸ“–
FrΓ©dΓ©ric

🌍 -
Glenn Matthews

πŸ“– +
Glenn Matthews

πŸ“–
Igor Couto

πŸ›
Ikko Ashimine

πŸ“–
Irapeke

🌍
Jacek Sawoszczuk

πŸ“–
Jason Williams

πŸ“–
Jeremy Jackson

πŸ’» -
Joebidido

🌍 +
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

πŸ“–
Kake

πŸ“–
Kapunahele Wong

πŸ“–
Karen

πŸ“– πŸ“‹
Katie McGinley

πŸ“– -
Kieran Klaassen

πŸ’» +
Kieran Klaassen

πŸ’»
Kittycatou

🌍
Kris

πŸ“–
Kristin Ruben

πŸ’»
Loudepeuter

🌍
Lucian

πŸ“‹
Marcus

🌍 -
Martin Tribo

πŸ“– +
Martin Tribo

πŸ“–
Nadege Michel

⚠️ πŸ“–
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler

πŸ“–
Nick Dower

πŸ“– πŸ’» πŸ›
Patrick Forringer

πŸ”Œ
Paul

πŸ“– πŸ“ 🌍 -
Phillip Thelen

πŸ’» +
Phillip Thelen

πŸ’»
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX

πŸ’» 🎨
Rik Hekker

πŸ›
Sam Livingston-Gray

πŸ“–
Sanne

πŸ’» πŸ“– -
Sara Latorre

🌍 +
Sara Latorre

🌍
SeaZeeZee

πŸ“– πŸ’»
Slylele

πŸ“– 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona

πŸ“– -
Unmutual

πŸ“– +
Unmutual

πŸ“–
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews

πŸ“–
beautifulsummermoon

🌍
berce

πŸ“–
biou

πŸ’»
bobgeorgethe3rd

πŸ’» πŸ“– 🎨 -
brmlyklr

πŸ“– +
brmlyklr

πŸ“–
chri5b

πŸ’» ⚠️
dingcycle

🌍
drowned-in-books

πŸ’¬
econo202

πŸ“–
ericamattos

🌍
fightingrabbit

πŸ’» -
gaylyndie

πŸ“– +
gaylyndie

πŸ“–
grimlokason

πŸ’»
hellgy

🎨
jackseye

πŸ“–
marckiesel

🌍
mesil

πŸ›
starfetch

πŸ’» πŸ“– 🌍 🎨 -
ttimearl

πŸ–‹ +
ttimearl

πŸ–‹
tuesgloomsday

πŸ“–
valadaptive

πŸ’»
viocky

🌍 diff --git a/config/changelog.yaml b/config/changelog.yaml index f4686edf826..93926b20d6a 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,8 +1,110 @@ Unreleased: + + Added: + config-helpers: + - This new package replaces the previous snapseries package + and adds extra helper methods for pattern config such as + `pctBasedOn()` which was previously exported by core + + Changed: + aaron: &esbuild + - Migrated from Rollup to Esbuild for all builds + albert: *esbuild + bee: *esbuild + bella: *esbuild + benjamin: *esbuild + bent: *esbuild + breanna: *esbuild + brian: *esbuild + bruce: *esbuild + carlita: *esbuild + carlton: *esbuild + cathrin: *esbuild + charlie: *esbuild + components: *esbuild + core: + - Migrated from Rollup to Esbuild for all builds + - The `pctBasedOn()` helper method for pattern config was moved to config-helpers + We did not make this a breaking change since it's only used internally. + cornelius: *esbuild + diana: *esbuild + examples: *esbuild + florence: *esbuild + florent: *esbuild + gatsby-remark-jargon: *esbuild + holmes: *esbuild + hortensia: *esbuild + huey: *esbuild + hugo: *esbuild + i18n: *esbuild + jaeger: *esbuild + legend: *esbuild + lucy: *esbuild + lunetius: *esbuild + models: *esbuild + mui-theme: *esbuild + paco: *esbuild + pattern-info: *esbuild + penelope: *esbuild + plugin-banner: *esbuild + plugin-bartack: *esbuild + plugin-bundle: *esbuild + plugin-bust: *esbuild + plugin-buttons: *esbuild + plugin-cutonfold: *esbuild + plugin-dimension: *esbuild + plugin-export-dxf: *esbuild + plugin-flip: *esbuild + plugin-gore: *esbuild + plugin-grainline: *esbuild + plugin-i18n: *esbuild + plugin-logo: *esbuild + plugin-measurements: *esbuild + plugin-mirror: *esbuild + plugin-notches: *esbuild + plugin-round: *esbuild + plugin-scalebox: *esbuild + plugin-sprinkle: *esbuild + plugin-svgattr: *esbuild + plugintest: *esbuild + plugin-theme: *esbuild + plugin-title: *esbuild + plugin-validate: *esbuild + plugin-versionfree-svg: *esbuild + remark-jargon: *esbuild + rendertest: *esbuild + sandy: *esbuild + shin: *esbuild + simon: *esbuild + simone: *esbuild + sven: *esbuild + tamiko: *esbuild + teagan: *esbuild + theo: *esbuild + tiberius: *esbuild + titan: *esbuild + trayvon: *esbuild + tutorial: *esbuild + ursula: *esbuild + utils: *esbuild + wahid: *esbuild + walburga: *esbuild + waralee: *esbuild + yuri: *esbuild + Fixed: hugo: - Fix incorrect seam allowance Closes [#2208](https://github.com/freesewing/freesewing/issues/2208) + i18n: + - Added missing lab namespace for English + simon: + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + simone: + - Added the frontdarts option back after it was (accidentally) removed + - Handle edge-case for 1/10 dolls with breasts where path split would yield empty half + teagan: + - Added missing name to config file 2.20.8: date: 2022-05-21 diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 4cc5f90c5f0..3c606f66512 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -3,49 +3,16 @@ _types: peer: '@freesewing/core': &freesewing '^{{version}}' '@freesewing/plugin-bundle': *freesewing + '@freesewing/config-helpers': *freesewing dev: - 'react': &react '^17.0.2' - 'react-dom': &react-dom '^17.0.2' - '@babel/plugin-proposal-class-properties': '^7.13.0' - '@freesewing/components': *freesewing - '@freesewing/css-theme': *freesewing - '@freesewing/i18n': *freesewing - '@freesewing/mui-theme': *freesewing - '@freesewing/plugin-bust': *freesewing - '@freesewing/plugin-buttons': *freesewing - '@freesewing/plugin-flip': *freesewing - '@freesewing/utils': *freesewing - 'react-scripts': '^5.0.0' - 'webpack': '^5.67.0' - 'rollup': '^2.66.1' - '@rollup/plugin-babel': '^5.3.0' - '@rollup/plugin-commonjs': '^21.0.1' - '@rollup/plugin-json': '^4.1.0' - '@rollup/plugin-node-resolve': '^13.1.3' - 'rollup-plugin-peer-deps-external': '^2.2.4' - '@material-ui/core': &matui-core '^4.12.3' - '@material-ui/icons': &matui-icons '^4.11.2' - '@material-ui/lab': &matui-lab '^v4.0.0-alpha.60' - 'axios': &axios '^0.25.0' - 'react-intl': &react-intl '^5.24.4' - 'prop-types': '^15.8.1' 'mocha': &mocha '^9.1.1' 'chai': &chai '^4.2.0' - '@babel/register': &babelregister '^7.10.5' plugin: peer: '@freesewing/core': *freesewing dev: 'mocha': *mocha 'chai': *chai - '@babel/core': '^7.11.0' - '@babel/register': *babelregister - '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' aaron: peer: '@freesewing/brian': *freesewing @@ -80,7 +47,6 @@ charlie: peer: '@freesewing/plugin-bartack': *freesewing '@freesewing/plugin-mirror': *freesewing - '@freesewing/snapseries': *freesewing '@freesewing/titan': *freesewing css-theme: _: @@ -90,8 +56,8 @@ css-theme: '@fontsource/ubuntu': &ubuntu 'latest' components: peer: - 'axios': *axios - 'react': *react + 'axios': &axios '^0.25.0' + 'react': &react '^17.0.2' '@freesewing/pattern-info': *freesewing '@freesewing/mui-theme': *freesewing '@freesewing/css-theme': *freesewing @@ -106,10 +72,10 @@ components: '@fontsource/ubuntu': *ubuntu '@freesewing/i18n': *freesewing '@freesewing/utils': *freesewing - 'react-intl': *react-intl - '@material-ui/core': *matui-core - '@material-ui/icons': *matui-icons - '@material-ui/lab': *matui-lab + 'react-intl': &react-intl '^5.24.4' + '@material-ui/core': &matui-core '^4.12.3' + '@material-ui/icons': &matui-icons '^4.11.2' + '@material-ui/lab': &matui-lab '^v4.0.0-alpha.60' 'prismjs': '^1.25.0' 'react-markdown': '^6.0.2' 'file-saver': '^2.0.5' @@ -181,13 +147,12 @@ mui-theme: peer: '@material-ui/core': *matui-core 'react': *react - 'react-dom': *react-dom + 'react-dom': '^17.0.2' legend: peer: '@freesewing/plugin-buttons': *freesewing paco: peer: - '@freesewing/snapseries': *freesewing '@freesewing/titan': *freesewing plugin-bundle: dev: @@ -235,12 +200,6 @@ remark-jargon: peer: 'remark': '^13.0.0' 'remark-html': '^13.0.1' -sandy: - peer: - '@freesewing/snapseries': *freesewing -shin: - peer: - '@freesewing/snapseries': *freesewing simon: peer: '@freesewing/brian': *freesewing @@ -272,12 +231,6 @@ teagan: peer: '@freesewing/brian': *freesewing '@freesewing/plugin-bust': *freesewing -titan: - peer: - '@freesewing/snapseries': *freesewing -trayvon: - peer: - '@freesewing/snapseries': *freesewing utils: peer: 'tlds': '^1.221.1' diff --git a/config/descriptions.yaml b/config/descriptions.yaml index c70d9ceea3b..b84abedacda 100644 --- a/config/descriptions.yaml +++ b/config/descriptions.yaml @@ -12,6 +12,7 @@ carlita: 'A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long carlton: 'A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat' cathrin: 'A FreeSewing pattern for a underbust corset / waist trainer' charlie: 'A FreeSewing pattern for chino trousers' +config-helpers: 'A FreeSewing package to facilitate pattern configurations' components: 'A collection of React components for FreeSewing web UIs' core: 'A library for creating made-to-measure sewing patterns' cornelius: 'A FreeSewing pattern for cycling breeches, based on the Keystone drafting system' @@ -72,7 +73,6 @@ sandy: 'A FreeSewing pattern for a circle skirt' shin: 'A FreeSewing pattern for swim trunks' simon: 'A FreeSewing pattern for a button down shirt' simone: 'A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)' -snapseries: 'A FreeSewing package for common values for snapped percentage options' strapi: "Freesewing's Strapi instance" sven: 'A FreeSewing pattern for a straightforward sweater' svgtopdf: 'FreeSewing on-demand tiler' diff --git a/config/exceptions.yaml b/config/exceptions.yaml index 0693a54c241..5ed8408f9f6 100644 --- a/config/exceptions.yaml +++ b/config/exceptions.yaml @@ -28,10 +28,10 @@ customReadme: - freesewing.shared - freesewing.org - svgtopdf -customRollup: +customBuild: - backend - components - - core + - create-freesewing-pattern - css-theme - freesewing.dev - freesewing.lab @@ -43,13 +43,8 @@ customRollup: - remark-jargon - strapi - svgtopdf + - plugin-bundle - utils -namedExports: - - css-theme - - models - - pattern-info - - mui-theme - - snapseries packageJson: backend: private: true @@ -97,8 +92,12 @@ packageJson: module: '!' freesewing.dev: private: true + freesewing.lab: + private: true freesewing.org: private: true + freesewing.shared: + private: true holmes: author: AlfaLyr (https://github.com/alfalyr) i18n: diff --git a/config/scripts.yaml b/config/scripts.yaml index 18058fd6ebb..798233026fe 100644 --- a/config/scripts.yaml +++ b/config/scripts.yaml @@ -1,58 +1,55 @@ _: + build: 'node build.js' + cibuild_step1: 'node build.js' clean: 'rimraf dist' - build: 'rollup -c' - cibuild_step1: 'rollup -c' - test: ¬ests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0' - pubtest: 'npm publish --registry http://localhost:6662' - pubforce: 'npm publish' + mbuild: 'NO_MINIFY=1 node build.js' symlink: 'mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -' - start: 'rollup -c -w' + test: ¬ests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0' + vbuild: 'VERBOSE=1 node build.js' _types: pattern: - netlify: 'echo "Not configured yet"' + prettier: "npx prettier --write 'src/*.js' 'config/*.js'" test: &test 'BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register' testci: &testci "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" plugin: + prettier: "npx prettier --write 'src/*.js' 'tests/*.mjs'" test: *test testci: *testci - prettier: "npx prettier --write 'src/*.js' 'tests/*.mjs'" create-freesewing-pattern: - clean: '!' - nodebuild: '!' - modulebuild: '!' - cibuild_step1: '!' build: '!' - test: *test - testci: *testci + cibuild_step1: '!' + clean: '!' + mbuild: '!' + modulebuild: '!' + nodebuild: '!' + test: '!' + testci: '!' + vbuild: '!' css-theme: - cibuild_step1: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' build: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' + cibuild_step1: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' watch: 'npx node-sass --watch --output-style compressed src/theme.scss dist/theme.css' components: - test: *notests + clean: 'rimraf Blockquote && rimraf Draft && rimraf DraftConfigurator && rimraf Emblem && rimraf Example && rimraf Footer && rimraf Icon && rimraf Legend && rimraf LineDrawing && rimraf Logo && rimraf Navbar && rimraf Ogol && rimraf Robot && rimraf SampleConfigurator && rimraf Spinner && rimraf withGist && rimraf withLanguage && rimraf withStorage && rimraf Workbench' storybook: 'start-storybook -p 6663' - # react-scripts doesn't handle .mjs files correctly - modulebuild: '!' - clean: 'rimraf Blockquote && rimraf Draft && rimraf DraftConfigurator && rimraf Emblem && rimraf Example && rimraf Footer && rimraf Icon && rimraf Logo && rimraf Navbar && rimraf Ogol && rimraf Robot && rimraf SampleConfigurator && rimraf withGist && rimraf withLanguage && rimraf Workbench' - cibuild_step2: 'rollup -c' - build: 'rollup -c' - watch: 'BABEL_ENV=production rollup -c -w -o dist/index.js -f cjs' + test: *notests core: - testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' + coverage: 'BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov' + report: 'BABEL_ENV=production nyc report --reporter=html' test: 'BABEL_ENV=production nyc -x node_modules -x tests/fixtures -x bin-pack npx mocha tests/*.test.js' testci: "BABEL_ENV=production npx mocha tests/*.test.js --require @babel/register --reporter ../../tests/reporters/terse.js" - report: 'BABEL_ENV=production nyc report --reporter=html' - coverage: 'BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov' + testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' i18n: # react-scripts doesn't handle .mjs files correctly modulebuild: '!' + prebuild: 'node src/prebuild.mjs' test: *test testci: *testci - prebuild: 'node src/prebuild.mjs' pattern-info: cibuild_step1: '!' - cibuild_step2: 'node src/prebuild.js && rollup -c' + cibuild_step2: 'node src/prebuild.js && node build.js' prebuild: 'node src/prebuild.js' utils: + 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" # react-scripts doesn't handle .mjs files correctly modulebuild: '!' diff --git a/config/templates/build.dflt.js b/config/templates/build.dflt.js new file mode 100644 index 00000000000..c77d47c1637 --- /dev/null +++ b/config/templates/build.dflt.js @@ -0,0 +1,55 @@ +/* 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) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/config/templates/rollup.config.dflt.js b/config/templates/rollup.config.dflt.js deleted file mode 100644 index 83bc5ef0eec..00000000000 --- a/config/templates/rollup.config.dflt.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()], -} diff --git a/package.json b/package.json index 5aa72332acd..6c4b713b38a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "kickstart": "npx lerna bootstrap && yarn buildall", "clean": "rimraf dist", "test": "lerna run test", - "prettier": "npx prettier --write 'packages/**/src/*.js' 'packages/**/config/*.js' 'packages/**/example/src/*' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.js'", + "prettier": "npx prettier --write 'packages/**/src/*.js' 'packages/**/config/*.js' 'packages/i18n/src/locales/**/*.*' 'packages/**/tests/*.mjs'", "reconfigure": "all-contributors generate && node scripts/reconfigure.js", "prerelease": "lerna version --no-git-tag-version --no-push && yarn reconfigure && yarn buildall", "buildall": "lerna run cibuild_step1 && lerna run cibuild_step2", diff --git a/scripts/reconfigure.js b/scripts/reconfigure.js index ecfe149efa9..e9150bae7ee 100644 --- a/scripts/reconfigure.js +++ b/scripts/reconfigure.js @@ -24,9 +24,9 @@ const config = { exceptions: readConfigFile('exceptions.yaml'), templates: { pkg: readTemplateFile('package.dflt.json'), - rollup: readTemplateFile('rollup.config.dflt.js'), changelog: readTemplateFile('changelog.dflt.md'), - readme: readTemplateFile('readme.dflt.md') + readme: readTemplateFile('readme.dflt.md'), + build: readTemplateFile('build.dflt.js'), } } @@ -54,35 +54,6 @@ function readTemplateFile(file) { return fs.readFileSync(path.join(repoPath, 'config', 'templates', file), 'utf-8') } -/** - * Reads a pattern example file - */ -function readExampleFile(file, subdir = false) { - return fs.readFileSync( - subdir - ? path.join( - repoPath, - 'packages', - 'create-freesewing-pattern', - 'template', - 'default', - 'example', - file - ) - : path.join( - repoPath, - 'packages', - 'create-freesewing-pattern', - 'template', - 'default', - 'example', - subdir, - file - ), - 'utf-8' - ) -} - /** * Reads a YAML config file, with Mustache replacements if needed */ @@ -231,9 +202,6 @@ function packageConfig(pkg, config) { if (config.exceptions.packageJson[pkg][key] === '!') delete pkgConf[key] } } - if (config.exceptions.namedExports.indexOf(pkg) !== -1) { - pkgConf.rollup.exports = 'named' - } return pkgConf } @@ -407,57 +375,9 @@ function validate(pkgs, config) { } /** - * Creates and 'example' directory for patterns, - * same result as what gets done by create-freesewing-pattern. - */ -function configurePatternExample(pkg, config) { - // Create example dir structure - let source = path.join( - config.repoPath, - 'packages', - 'create-freesewing-pattern', - 'template', - 'freesewing', - 'example' - ) - let dest = path.join(config.repoPath, 'packages', pkg, 'example') - fse.ensureDirSync(path.join(dest, 'src')) - fse.ensureDirSync(path.join(dest, 'public')) - // Copy files - for (let file of ['.babelrc', '.env']) - fs.copyFileSync(path.join(source, file), path.join(dest, file)) - for (let file of ['index.js', 'serviceWorker.js', 'layout.css']) - fs.copyFileSync(path.join(source, 'src', file), path.join(dest, 'src', file)) - fs.copyFileSync( - path.join(source, 'public', 'favicon.ico'), - path.join(dest, 'public', 'favicon.ico') - ) - // Write templates - let replace = { - name: pkg, - version, - author: 'freesewing', - yarn: true, - language: 'en' - } - for (let file of ['package.json', 'README.md', 'netlify.toml']) { - let template = handlebars.compile(fs.readFileSync(path.join(source, file), 'utf-8')) - fs.writeFileSync(path.join(dest, file), template(replace)) - } - for (let file of ['index.html', 'manifest.json', 'layout.css']) { - let template = handlebars.compile(fs.readFileSync(path.join(source, 'public', file), 'utf-8')) - fs.writeFileSync(path.join(dest, 'public', file), template(replace)) - } - let template = handlebars.compile(fs.readFileSync(path.join(source, 'src', 'App.js'), 'utf-8')) - fs.writeFileSync(path.join(dest, 'src', 'App.js'), template(replace)) -} - -/** - * Puts a package.json, rollup.config.js, README.md, and CHANGELOG.md + * Puts a package.json, build.js, README.md, and CHANGELOG.md * into every subdirectory under the packages directory. - * Also creates an example dir for pattern packages, and writes - * the global CHANGELOG.md. - * New: Adds unit tests for patterns + * Also adds unit tests for patterns, and writes the global CHANGELOG.md. */ function reconfigure(pkgs, config) { for (const pkg of pkgs) { @@ -469,10 +389,10 @@ function reconfigure(pkgs, config) { JSON.stringify(pkgConfig, null, 2) + '\n' ) } - if (config.exceptions.customRollup.indexOf(pkg) === -1) { + if (config.exceptions.customBuild.indexOf(pkg) === -1) { fs.writeFileSync( - path.join(config.repoPath, 'packages', pkg, 'rollup.config.js'), - config.templates.rollup + path.join(config.repoPath, 'packages', pkg, 'build.js'), + config.templates.build ) } if (config.exceptions.customReadme.indexOf(pkg) === -1) { @@ -485,7 +405,6 @@ function reconfigure(pkgs, config) { ) } const type = packageType(pkg, config) - if (type === 'pattern') configurePatternExample(pkg, config) } fs.writeFileSync(path.join(config.repoPath, 'CHANGELOG.md'), changelog('global', config)) console.log(chalk.yellowBright.bold('All done.')) diff --git a/yarn.lock b/yarn.lock index 3bc9c2e9db7..83ed7344674 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3954,7 +3954,7 @@ resolved "https://registry.yarnpkg.com/@request/interface/-/interface-0.1.0.tgz#c913504d3dc2810afad555b599aeaec2cc4c6768" integrity sha1-yRNQTT3CgQr61VW1ma6uwsxMZ2g= -"@rollup/plugin-babel@^5.1.0", "@rollup/plugin-babel@^5.2.0", "@rollup/plugin-babel@^5.3.0": +"@rollup/plugin-babel@^5.1.0", "@rollup/plugin-babel@^5.2.0": version "5.3.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== @@ -3994,7 +3994,7 @@ is-module "^1.0.0" resolve "^1.19.0" -"@rollup/plugin-node-resolve@^13.0.0", "@rollup/plugin-node-resolve@^13.1.3": +"@rollup/plugin-node-resolve@^13.0.0": version "13.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== @@ -11323,6 +11323,14 @@ esbuild-openbsd-64@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-plugin-yaml@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-yaml/-/esbuild-plugin-yaml-0.0.1.tgz#660b9ddab78f4c3f488284762d6c01b6738615fb" + integrity sha512-s3jqOeeCd+dUuUsuBqLRgN2SeQjPF2ppIglvV3B//txgQpTDThGvxu6sqiOUOJ0NOzegitmpWCXoCONdRbUS7w== + dependencies: + fs-extra "^9.1.0" + js-yaml "^4.0.0" + 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" @@ -24734,7 +24742,7 @@ rollup-plugin-json@^4.0.0: dependencies: rollup-pluginutils "^2.5.0" -rollup-plugin-peer-deps-external@^2.2.3, rollup-plugin-peer-deps-external@^2.2.4: +rollup-plugin-peer-deps-external@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== @@ -24775,7 +24783,7 @@ rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^2.43.1, rollup@^2.50.6, rollup@^2.66.1: +rollup@^2.43.1: version "2.67.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.0.tgz#496de7e641dbe39f681c5a82419cb5013917d406" integrity sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==