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

Javascript
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,
      hpsToWaistBack: 502,
      neck: 420,
      shoulderSlope: 13,
      shoulderToShoulder: 481,
      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:

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