Skip to main content

FreeSewing in Node.js

These instructions explain how you can generate patterns in Node.js. Whether it's in a backend application or on the command line, all it takes is a few lines of code — and a couple of dependencies — to generate a pattern.

tip
Use FreeSewing.org if you just want a pattern​

These instructions are intended for people who want to generate their own patterns using FreeSewing packages. If you just want a sewing pattern created for you, you can get all our designs on FreeSewing.org, our website for makers.

High level overview​

To generate a pattern, you will need to:

  • Instantiate the pattern (new ...)
  • Pass it the settings and measurements you want to use ({ ... })
  • Load the theme plugin (using use())
  • Draft the pattern (using draft())
  • Render it to SVG (using render())

Which can be done as a one-liner since use(), draft() and render() are all chainable, as shown below.

Code example​

import { Aaron } from '@freesewing/aaron' // Design to use
import { pluginTheme as theme } from '@freesewing/plugin-theme' // SVG theme

const svg = new Aaron( // Instantiate pattern
{ // Pass in settings. See reference > core > settings
sa: 10, // Seam allowance
// ...
measurements: { // Pass in measurements
biceps: 387,
chest: 1105,
hips: 928,
hpsToBust: 230,
hpsToWaistBack: 502,
neck: 420,
shoulderSlope: 13,
shoulderToShoulder: 481,
waistToArmpit: 260,
waistToHips: 139,
}
})
.use(theme) // Load theme plugin
.draft() // Draft the pattern
.render() // Render to SVG

// svg now holds the generated SVG code
console.log(svg)
note
Remarks on the example code​

Dependencies​

The code above will only work if you've got the required dependencies installed on your system. Obviously you need Node.js, but you will also need the following packages:

  • @freesewing/core: Our core library
  • @freesewing/plugin-bundle: Set of common plugins
  • @freesewing/aaron or any design you want to use
  • Any design on which the design you choose is built. In this case, Aaron depends on @freesewing/brian

For the example above, your package.json dependencies section will look like this:

  "dependencies": {
"@freesewing/core": "latest"
"@freesewing/aaron": "latest",
"@freesewing/brian": "latest",
"@freesewing/plugin-theme": "latest"
}