1
0
Fork 0

chore: Re-structure workspaces, enforce build order

These are some changes in the way the monorepo is structured,
that are aimed at making it easier to get started.

There are two important changes:

**Multiple workspaces**

We had a yarn workspaces setup at `packages/*`. But our monorepo has
grown to 92 packages which can be overwhelming for people not familiar
with the package names.

To remedy this, I've split it into 4 different workspaces:

- `designs/*`: Holds FreeSewing designs (think patterns)
- `plugins/*`: Holds FreeSewing plugins
- `packages/*`: Holds other packages published on NPM
- `sites/*`: Holds software that is not published as an NPM package,
  such as our various websites and backend API

This should make it easier to find things, and to answer questions like
*where do I find the code for the plugins*.

**Updated reconfigure script to handle build order**

One problem when bootstrapping the repo is inter-dependencies between
packages. For example, building a pattern will only work once
`plugin-bundle` is built. Which will only work once all plugins in the
bundle or built. And that will only work when `core` is built, and so
on.

This can be frustrating for new users as `yarn buildall` will fail.
And it gets overlooked by seasoned devs because they're likely to have
every package built in their repo so this issue doesn't concern them.

To remedy this, we now have a `config/build-order.mjs` file and the
updated `/scripts/reconfigure.mjs` script will enforce the build order
so that things *just work*.
This commit is contained in:
Joost De Cock 2022-06-16 17:11:31 +02:00
parent 895f993a70
commit e4035b2509
1581 changed files with 2118 additions and 1868 deletions

File diff suppressed because it is too large Load diff

32
config/build-order.mjs Normal file
View file

@ -0,0 +1,32 @@
import { designs, plugins, packages, software } from './software/index.mjs'
/*
* As this monorepo has interlocking dependencies
* we need to ensure things get built in the correct
* order. This file takes care of that
*/
const first = [ 'core', 'config-helpers', 'remark-jargon' ]
const blocks = [ 'brian', 'titan', 'bella', 'breanna', 'bent' ]
export const buildOrder = [
// First build FreeSewing core library and config-helpers
first,
// Then build all FreeSewing plugins
Object.keys(plugins),
// Then build the plugin bundle, but not the bundle
[ 'plugin-bundle' ],
// Then build all FreeSewing designs that are blocks
blocks,
// Then build all FreeSewing designs, but not the bundle
Object.keys(designs).filter(id => blocks.indexOf(id) === -1),
// Finally build any other packages (without core)
Object.keys(packages).filter(id => first.indexOf(id) === -1)
]

View file

@ -1,5 +1,5 @@
_types: _types:
pattern: design:
peer: peer:
'@freesewing/core': &freesewing '^{{version}}' '@freesewing/core': &freesewing '^{{version}}'
'@freesewing/plugin-bundle': *freesewing '@freesewing/plugin-bundle': *freesewing

View file

@ -1,93 +0,0 @@
aaron: 'A FreeSewing pattern for a A-shirt or tank top'
albert: 'A FreeSewing pattern for an apron'
backend: 'FreeSewing backend'
bee: 'A FreeSewing pattern for a bikini top'
bella: 'A FreeSewing pattern for a womenswear bodice block'
benjamin: 'A FreeSewing pattern for a bow tie'
bent: 'A FreeSewing pattern for a menswear body block with a two-part sleeve'
breanna: 'A FreeSewing pattern for a basic body block for womenswear'
brian: 'A FreeSewing pattern for a basic body block for menswear'
bruce: 'A FreeSewing pattern for boxer briefs'
carlita: 'A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat'
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'
create-freesewing-pattern: 'Initializer package for FreeSewing patterns: npm init FreeSewing-pattern'
css-theme: 'A CSS theme for FreeSewing web UIs'
diana: 'A FreeSewing pattern for a top with a draped neck'
examples: 'A FreeSewing pattern holding examples for our documentation'
florent: 'A FreeSewing pattern for a flat cap'
florence: 'A FreeSewing pattern for a face mask'
freesewing.dev: 'FreeSewing website with documentation for contributors & developers'
freesewing.lab: 'FreeSewing website to test various patterns'
freesewing.org: 'FreeSewing website'
freesewing.shared: 'Shared code and React components for different websites'
gatsby-remark-jargon: 'A gatsby-transformer-remark sub-plugin for jargon terms'
hi: 'A FreeSewing pattern for a shark plush toy'
holmes: 'A FreeSewing pattern for a Sherlock Holmes hat'
hortensia: 'A FreeSewing pattern for a handbag'
huey: 'A FreeSewing pattern for a zip-up hoodie'
hugo: 'A FreeSewing pattern for a hooded jumper with raglan sleeves'
i18n: 'Translations for the FreeSewing project'
jaeger: 'A FreeSewing pattern for a sport coat style jacket'
models: 'Body measurements data for a range of default sizes'
mui-theme: 'A Material-UI theme for FreeSewing web UIs'
legend: 'A FreeSewing pattern to document pattern notation'
lucy: 'A FreeSewing pattern for a historical tie-on pocket'
lunetius: 'A FreeSewing pattern for a lacerna, a historical Roman cloak'
paco: 'A FreeSewing pattern for summer pants'
pattern-info: 'Information about available freesewing patterns'
penelope: 'A FreeSewing pattern for a pencil skirt'
plugin-banner: 'A FreeSewing plugin to repeat text on a path'
plugin-bartack: 'A FreeSewing plugin to add bartacks to your pattern'
plugin-bundle: 'An umbrella package of 8 essential FreeSewing build-time plugins'
plugin-bust: 'A FreeSewing plugin that helps with bust-adjusting menswear patterns'
plugin-buttons: 'A FreeSewing plugin that provides button, buttonhole, and snap snippets'
plugin-cutonfold: 'A FreeSewing plugin to add cut-on-fold indicators on your patterns'
plugin-dimension: 'A FreeSewing plugin to add dimensions to your (paperless) pattern'
plugin-export-dxf: 'A FreeSewing plugin to export your pattern as DXF-ASTM'
plugin-flip: 'A FreeSewing plugin to flip parts horizontally'
plugin-gore: 'A FreeSewing plugin to generate gores for a semi-sphere or dome'
plugin-grainline: 'A FreeSewing plugin to add grainline indicators on your patterns'
plugin-i18n: 'A FreeSewing plugin for pattern translation'
plugin-logo: 'A FreeSewing plugin to add our logo to your patterns'
plugin-measurements: 'A FreeSewing plugin that adds additional measurements that can be calculated from existing ones'
plugin-mirror: 'A FreeSewing plugin to mirror points or paths'
plugin-notches: 'A FreeSewing plugin that provides front and back notch snippets'
plugin-round: 'A FreeSewing plugin to round corners'
plugin-scalebox: 'A FreeSewing plugin to add a scalebox to your pattern'
plugin-sprinkle: 'A FreeSewing plugin to bulk-add snippets to your pattern'
plugin-svgattr: 'A FreeSewing plugin to set SVG attributes'
plugin-theme: 'A FreeSewing plugin that provides a default theme'
plugin-title: 'A FreeSewing plugin to add a title to your pattern parts'
plugin-validate: 'A FreeSewing plugin that validates aspects of your code'
plugin-versionfree-svg: 'A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions'
plugintest: 'A FreeSewing pattern to test (y)our plugins'
prettier-config: "FreeSewing's shared configuration for prettier"
remark-jargon: 'A Remark plugin for jargon terms'
rendertest: 'A FreeSewing pattern to test (y)our render engine our CSS'
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)'
strapi: "Freesewing's Strapi instance"
sven: 'A FreeSewing pattern for a straightforward sweater'
svgtopdf: 'FreeSewing on-demand tiler'
tamiko: 'A FreeSewing pattern for a zero-waste top'
theo: 'A FreeSewing pattern for classic trousers'
tiberius: 'A FreeSewing pattern for a tunica, a historical Roman tunic'
teagan: 'A FreeSewing pattern for a T-shirt'
titan: 'A FreeSewing pattern for a unisex trouser block'
trayvon: 'A FreeSewing pattern for a tie'
tutorial: "A FreeSewing pattern for a baby bib that's used in our tutorial"
unice: 'A FreeSewing pattern for a basic, highly-customizable underwear pattern'
ursula: 'A FreeSewing pattern for a basic, highly-customizable underwear pattern'
utils: 'A collection of utilities shared across freesewing projects'
wahid: 'A FreeSewing pattern for a classic fitted waistcoat'
walburga: 'A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment'
waralee: 'A FreeSewing pattern for wrap pants'
yuri: 'A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie'

View file

@ -1,54 +1,19 @@
noNamespace: noNamespace:
- backend
- create-freesewing-pattern - create-freesewing-pattern
- remark-jargon - remark-jargon
- gatsby-remark-jargon - gatsby-remark-jargon
- freesewing.dev
- freesewing.shared
- freesewing.org
- svgtopdf
customChangelog:
- backend
- freesewing.dev
- freesewing.lab
- freesewing.shared
- freesewing.org
- svgtopdf
customPackageJson:
- backend
- freesewing.dev
- freesewing.lab
- freesewing.shared
- freesewing.org
- svgtopdf
customReadme:
- backend
- freesewing.dev
- freesewing.lab
- freesewing.shared
- freesewing.org
- svgtopdf
customBuild: customBuild:
- backend
- components - components
- create-freesewing-pattern - create-freesewing-pattern
- css-theme - css-theme
- freesewing.dev
- freesewing.lab
- freesewing.shared
- freesewing.org
- gatsby-remark-jargon - gatsby-remark-jargon
- i18n - i18n
- models - models
- prettier-config - prettier-config
- remark-jargon - remark-jargon
- strapi
- svgtopdf
- plugin-bundle - plugin-bundle
- utils - utils
packageJson: packageJson:
backend:
private: true
bee: bee:
author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd) author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)
benjamin: benjamin:
@ -91,14 +56,6 @@ packageJson:
css-theme: css-theme:
main: dist/theme.css main: dist/theme.css
module: '!' module: '!'
freesewing.dev:
private: true
freesewing.lab:
private: true
freesewing.org:
private: true
freesewing.shared:
private: true
hi: hi:
author: woutervdub (https://github.com/woutervdub) author: woutervdub (https://github.com/woutervdub)
holmes: holmes:
@ -130,19 +87,6 @@ packageJson:
- package.json - package.json
sandy: sandy:
author: AlfaLyr (https://github.com/alfalyr) author: AlfaLyr (https://github.com/alfalyr)
strapi:
private: true
scripts:
develop: strapi develop
start: strapi start
build: strapi build
strapi: strapi
homepage: "https://posts.freesewing.org/"
files: []
publishConfig: {}
rollup: {}
svgtopdf:
private: true
tiberius: *starf tiberius: *starf
unice: unice:
author: Anna Puk (https://github.com/anna-puk) author: Anna Puk (https://github.com/anna-puk)

View file

@ -19,6 +19,15 @@ css-theme:
- scss - scss
- sass - sass
- theme - theme
design:
- design
- diy
- fashion
- made to measure
- parametric design
- pattern
- sewing
- sewing pattern
examples: examples:
- documentation - documentation
- example - example
@ -46,15 +55,8 @@ other:
- made to measure - made to measure
- parametric design - parametric design
- sewing - sewing
pattern: package:
- design - freesewing
- diy
- fashion
- made to measure
- parametric design
- pattern
- sewing
- sewing pattern
patterns: patterns:
- bundle - bundle
- design - design

View file

@ -1,13 +1,12 @@
_: _:
build: 'node build.js' build: 'node build.js'
cibuild_step1: 'node build.js'
clean: 'rimraf dist' clean: 'rimraf dist'
mbuild: 'NO_MINIFY=1 node build.js' mbuild: 'NO_MINIFY=1 node build.js'
symlink: 'mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -' symlink: 'mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -'
test: &notests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0' test: &notests 'echo "{{name}}: No tests configured. Perhaps you''d like to do this?" && exit 0'
vbuild: 'VERBOSE=1 node build.js' vbuild: 'VERBOSE=1 node build.js'
_types: _types:
pattern: design:
prettier: "npx prettier --write 'src/*.js' 'config/*.js'" prettier: "npx prettier --write 'src/*.js' 'config/*.js'"
test: &test 'BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register' 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" testci: &testci "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js"
@ -20,14 +19,11 @@ create-freesewing-pattern:
cibuild_step1: '!' cibuild_step1: '!'
clean: '!' clean: '!'
mbuild: '!' mbuild: '!'
modulebuild: '!'
nodebuild: '!'
test: '!' test: '!'
testci: '!' testci: '!'
vbuild: '!' vbuild: '!'
css-theme: css-theme:
build: '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' watch: 'npx node-sass --watch --output-style compressed src/theme.scss dist/theme.css'
components: components:
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' 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'
@ -41,15 +37,12 @@ core:
testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' testonly: 'BABEL_ENV=production npx mocha tests/*.test.js'
i18n: i18n:
# react-scripts doesn't handle .mjs files correctly # react-scripts doesn't handle .mjs files correctly
modulebuild: '!'
prebuild: 'node src/prebuild.mjs' prebuild: 'node src/prebuild.mjs'
test: *test test: *test
testci: *testci testci: *testci
pattern-info: pattern-info:
cibuild_step1: '!' cibuild_step1: '!'
cibuild_step2: 'node src/prebuild.js && node build.js' build: 'node src/prebuild.js && node build.js'
prebuild: 'node src/prebuild.js' prebuild: 'node src/prebuild.js'
utils: 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" 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: '!'

View file

@ -0,0 +1,51 @@
{
"aaron": "A FreeSewing pattern for a A-shirt or tank top",
"albert": "A FreeSewing pattern for an apron",
"bee": "A FreeSewing pattern for a bikini top",
"bella": "A FreeSewing pattern for a womenswear bodice block",
"benjamin": "A FreeSewing pattern for a bow tie",
"bent": "A FreeSewing pattern for a menswear body block with a two-part sleeve",
"breanna": "A FreeSewing pattern for a basic body block for womenswear",
"brian": "A FreeSewing pattern for a basic body block for menswear",
"bruce": "A FreeSewing pattern for boxer briefs",
"carlita": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
"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",
"cornelius": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system",
"diana": "A FreeSewing pattern for a top with a draped neck",
"examples": "A FreeSewing pattern holding examples for our documentation",
"florence": "A FreeSewing pattern for a face mask",
"florent": "A FreeSewing pattern for a flat cap",
"hi": "A FreeSewing pattern for a shark plush toy",
"holmes": "A FreeSewing pattern for a Sherlock Holmes hat",
"hortensia": "A FreeSewing pattern for a handbag",
"huey": "A FreeSewing pattern for a zip-up hoodie",
"hugo": "A FreeSewing pattern for a hooded jumper with raglan sleeves",
"jaeger": "A FreeSewing pattern for a sport coat style jacket",
"legend": "A FreeSewing pattern to document pattern notation",
"lucy": "A FreeSewing pattern for a historical tie-on pocket",
"lunetius": "A FreeSewing pattern for a lacerna, a historical Roman cloak",
"paco": "A FreeSewing pattern for summer pants",
"penelope": "A FreeSewing pattern for a pencil skirt",
"plugintest": "A FreeSewing pattern to test (y)our plugins",
"rendertest": "A FreeSewing pattern to test (y)our render engine our CSS",
"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)",
"sven": "A FreeSewing pattern for a straightforward sweater",
"tamiko": "A FreeSewing pattern for a zero-waste top",
"teagan": "A FreeSewing pattern for a T-shirt",
"theo": "A FreeSewing pattern for classic trousers",
"tiberius": "A FreeSewing pattern for a tunica, a historical Roman tunic",
"titan": "A FreeSewing pattern for a unisex trouser block",
"trayvon": "A FreeSewing pattern for a tie",
"tutorial": "A FreeSewing pattern for a baby bib that's used in our tutorial",
"unice": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
"ursula": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
"wahid": "A FreeSewing pattern for a classic fitted waistcoat",
"walburga": "A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment",
"waralee": "A FreeSewing pattern for wrap pants",
"yuri": "A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie"
}

31
config/software/index.mjs Normal file
View file

@ -0,0 +1,31 @@
import designs from './designs.json'
import packages from './packages.json'
import plugins from './plugins.json'
import sites from './sites.json'
// Helper method to construct summary objects
const unpack = (obj, folder) => Object.fromEntries(
Object.keys(obj).map(name => [name, { name, folder, description: obj[name], type: folder.slice(0, -1) } ])
)
// Re-Export imported JSON
export { designs, packages, plugins, sites }
// All software
export const software = {
...unpack(designs, 'designs'),
...unpack(plugins, 'plugins'),
...unpack(packages, 'packages'),
...unpack(sites, 'sites'),
}
// All software published on NPM
export const publishedSoftware = {
...unpack(designs, 'designs'),
...unpack(plugins, 'plugins'),
...unpack(packages, 'packages'),
}
export const publishedTypes = [ 'designs', 'packages', 'plugins' ]
export const types = [ ...publishedTypes, 'sites' ]

View file

@ -0,0 +1,15 @@
{
"components": "A collection of React components for FreeSewing web UIs",
"config-helpers": "A FreeSewing package to facilitate pattern configurations",
"core": "A library for creating made-to-measure sewing patterns",
"create-freesewing-pattern": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern",
"css-theme": "A CSS theme for FreeSewing web UIs",
"gatsby-remark-jargon": "A gatsby-transformer-remark sub-plugin for jargon terms",
"i18n": "Translations for the FreeSewing project",
"models": "Body measurements data for a range of default sizes",
"mui-theme": "A Material-UI theme for FreeSewing web UIs",
"pattern-info": "Information about available freesewing patterns",
"prettier-config": "FreeSewing's shared configuration for prettier",
"remark-jargon": "A Remark plugin for jargon terms",
"utils": "A collection of utilities shared across freesewing projects"
}

View file

@ -0,0 +1,27 @@
{
"plugin-banner": "A FreeSewing plugin to repeat text on a path",
"plugin-bartack": "A FreeSewing plugin to add bartacks to your pattern",
"plugin-bundle": "An umbrella package of 8 essential FreeSewing build-time plugins",
"plugin-bust": "A FreeSewing plugin that helps with bust-adjusting menswear patterns",
"plugin-buttons": "A FreeSewing plugin that provides button, buttonhole, and snap snippets",
"plugin-cutonfold": "A FreeSewing plugin to add cut-on-fold indicators on your patterns",
"plugin-dimension": "A FreeSewing plugin to add dimensions to your (paperless) pattern",
"plugin-export-dxf": "A FreeSewing plugin to export your pattern as DXF-ASTM",
"plugin-flip": "A FreeSewing plugin to flip parts horizontally",
"plugin-gore": "A FreeSewing plugin to generate gores for a semi-sphere or dome",
"plugin-grainline": "A FreeSewing plugin to add grainline indicators on your patterns",
"plugin-i18n": "A FreeSewing plugin for pattern translation",
"plugin-logo": "A FreeSewing plugin to add our logo to your patterns",
"plugin-measurements": "A FreeSewing plugin that adds additional measurements that can be calculated from existing ones",
"plugin-mirror": "A FreeSewing plugin to mirror points or paths",
"plugin-notches": "A FreeSewing plugin that provides front and back notch snippets",
"plugin-round": "A FreeSewing plugin to round corners",
"plugin-scalebox": "A FreeSewing plugin to add a scalebox to your pattern",
"plugin-sprinkle": "A FreeSewing plugin to bulk-add snippets to your pattern",
"plugin-svgattr": "A FreeSewing plugin to set SVG attributes",
"plugin-theme": "A FreeSewing plugin that provides a default theme",
"plugin-title": "A FreeSewing plugin to add a title to your pattern parts",
"plugin-validate": "A FreeSewing plugin that validates aspects of your code",
"plugin-versionfree-svg": "A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions"
}

View file

@ -0,0 +1,9 @@
{
"backend": "FreeSewing backend",
"freesewing.dev": "FreeSewing website with documentation for contributors & developers",
"freesewing.lab": "FreeSewing website to test various patterns",
"freesewing.org": "FreeSewing website",
"freesewing.shared": "Shared code and React components for different websites",
"strapi": "Freesewing's Strapi instance",
"svgtopdf": "FreeSewing on-demand tiler"
}

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step4": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

View file

@ -28,14 +28,14 @@
"module": "dist/index.mjs", "module": "dist/index.mjs",
"scripts": { "scripts": {
"build": "node build.js", "build": "node build.js",
"cibuild_step1": "node build.js",
"clean": "rimraf dist", "clean": "rimraf dist",
"mbuild": "NO_MINIFY=1 node build.js", "mbuild": "NO_MINIFY=1 node build.js",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register",
"vbuild": "VERBOSE=1 node build.js", "vbuild": "VERBOSE=1 node build.js",
"prettier": "npx prettier --write 'src/*.js' 'config/*.js'", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'",
"testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js",
"cibuild_step3": "node build.js"
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.21.0-rc.0", "@freesewing/core": "^2.21.0-rc.0",

Some files were not shown because too many files have changed in this diff Show more