Note: This is a fork of tracespace/tracespace which is no longer maintained by Mike Cousins. We have forked from release v4.2.8 and are continuing development from here.
tracespace is an open-source collection of tools to make looking at circuit boards on the internet easier. It converts Gerber and drill files used in PCB fabrication into SVGs for rendering and visualization.
- @tracespace/view - A Gerber viewer powered by the tracespace libraries.
- pcb-stackup - Render PCBs as beautiful, precise SVGs from Gerber/NC drill files
- @tracespace/cli - Render PCBs as SVGs from the comfort of your terminal
- gerber-to-svg - Render individual Gerber/NC drill files as SVGs
- whats-that-gerber - Identify Gerber and drill files by filename
- pcb-stackup-core - Layer stacking core logic for pcb-stackup
- gerber-plotter - Streaming layer image plotter
- gerber-parser - Streaming Gerber/drill file parser
- @tracespace/xml-id - XML ID generation and sanitation utilities
- @tracespace/fixtures - Test fixtures for tracespace projects
Renders of the Arduino Uno produced by pcb-stackup and gerber-to-svg:
Arduino Uno design files used under the terms of the Creative Commons Attribution Share-Alike license.
The tracespace tools live here in this monorepo. We use yarn and lerna to manage this setup.
Node v8 (lts/carbon) or later is recommended.
# clone repository and install dependencies
git clone [email protected]:tracespace/tracespace.git
cd tracespace
yarn install
This repository adheres to the Conventional Changelog commit specification for automatic changelog generation. We recommend installing commitizen to ensure your commit messages are properly formatted:
yarn global add commitizen
# later, when you're ready to commit
git add some/files/*
git cz
All development scripts below should be run from the root of the repository. Lerna handles delegating scripts downwards to the individual projects as necessary.
Automated tests consist of unit tests along with integration snapshot tests of SVG and data outputs.
# run unit and integration tests tests with coverage
yarn test
# set SNAPSHOT_UPDATE=1 to update integration test snapshots
SNAPSHOT_UPDATE=1 yarn test
# run unit tests in watch mode (no coverage)
yarn test:watch
# set INTEGRATION=1 to also include integration tests
INTEGRATION=1 yarn test:watch
# run all dev servers
yarn start
# run server for a specific project
yarn start --scope @tracespace/view
# build production bundles
yarn build
# build:all
# builds all production bundles, example files, and documentation
yarn build:all
# build all bundles and serve them for testing/validation
yarn serve
# as with the dev server, these commands may be scoped by name
yarn build --scope gerber-parser
yarn serve --scope @tracespace/view
# format the code for styling
yarn format
# lint the code for potential errors
yarn lint
# typecheck any typescript code
yarn types
Packages are published to npm by the CI server. To publish a release, you must have write access to the repository.
# checkout and pull latest from main
git checkout main
git pull origin main
# bump version (defaults to conventional commits recommendation)
yarn bump
# push commit and tag
git push origin main --follow-tags
For more detailed publishing options, see the full documentation below.