1
0
Fork 0
freesewing/sites/dev/docs/howtos/environments/nodejs
Joost De Cock ab3204f9f1 chore: Port FreeSewing.dev to docusaurus
The replaces the NextJS site powering FreeSewing.dev with a Docusaurus
setup. It's part of my efforts to simplify FreeSewing's setup so we can
focus on our core value proposition.
2024-09-28 13:13:48 +02:00
..
readme.mdx chore: Port FreeSewing.dev to docusaurus 2024-09-28 13:13:48 +02:00

---
title: 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](https://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

```js
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

- We are using `@freesewing/aaron` as the design, but you could use any design
- You probably want to [use your own measurements](/reference/settings/measurements)
  or you could use [our curated measurements sets](https://freesewing.org/curated-sets) to load measurements.
- We are using `@freesewing/plugin-theme` to theme our SVG, but you
  could [pass in your own CSS](/reference/api/svg/style)

:::

## 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"
  }
```