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 top arduino uno bottom
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 git@github.com: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.