This repo contains the code and documentation that powers developers.sparkpost.com.
To develop with this repository, you must have the following:
- Node: version 16 (e.g. 16.20.x, easiest via nvm or nodenv). Newer versions of Node are not supported — this site runs Gatsby 2/webpack 4, which breaks on Node 17+. The
.node-versionfile pins 14.16.1, which is what the Netlify build uses; both 14 and 16 work locally. - Python 3.11 or earlier available as
python3(or exported asPYTHON). Python 3.12+ removeddistutils, whichnode-gypneeds to compile thesharpimage library. With Homebrew:brew install python@3.11, thenexport PYTHON=$(brew --prefix python@3.11)/bin/python3.11before installing. - On Apple Silicon Macs:
libvips(brew install vips), since the oldsharpversion used here has no ARM prebuilt binaries and must compile against a system libvips. - A clone of this repo
cd developers.sparkpost.comto go into the website directory- Run
npm run bootstrapto install the npm dependencies
Note: the repo's .npmrc sets legacy-peer-deps=true — required because npm 7+ enforces peer dependencies strictly and this dependency tree predates that. If you install with a tool that ignores .npmrc, pass --legacy-peer-deps yourself.
When developing locally, you have two options: developing the whole website or develop just the API reference section. All content will hot-reload. If you aren't seeing changes, restart the development server.
This will develop the whole developer site.
- Run
npm run develop - Open http://localhost:4000/ to view the website.
This is what you want if you are making documentation changes.
This will only develop the API reference pages and skip unnecessary queries.
- Run
npm run docs - Open http://localhost:4000/api/ to view the docs.
To develop Netlify Functions locally, run npm run lambda. This will start a second development server for the serverless functions.
Each file located in the lambda/ directory will be deployed as a serverless function.
You'll find the all the content, pages, and data inside the content folder. If you are contributing content, take a
few minutes and read through the contributing guidelines.
Create a branch for your work in the repo:
git checkout mainto checkout the main branchgit pull origin mainto get the lastest codegit checkout -b your-branch-nameto create a branch
- Follow the Local development instructions to start the development server
- Make your changes as needed
- Changes to any files in the
contentandsrcdirectories will hot-reload. - If you make changes files in the
pluginsandgatsbydirectories or any top-level files, you will need to restart the server.
- Stage and commit your changes (
git add -A && git commit -m "Describe what you did") - Push your changes (
git push origin your-branch-name) - Create a Pull Request against the
mainbranch. Netlify will publish a deploy preview so you can share and preview your changes as a live site.
- npm 7+ enforces peer dependencies strictly, which this dependency tree cannot satisfy.
- The repo's
.npmrcsetslegacy-peer-deps=trueto handle this — make sure you are installing from the repo root. - If installing another way, pass
--legacy-peer-depstonpm install.
- The distutils package was removed in Python 3.12, but
node-gyp(used to compilesharp) needs it. - Install Python 3.11 (
brew install python@3.11) and point node-gyp at it:export PYTHON=$(brew --prefix python@3.11)/bin/python3.11, then runnpm run bootstrapagain. - or create a virtual environment (venv) with Python 3.12+ and
pip install setuptools
- The old
sharpversion used here has no prebuilt binaries for ARM Macs, so it compiles against a system-wide "libvips". - Install it with brew:
brew install vips - Proceed with
npm run bootstrapagain
- Install
node v.16.14.0(you can use nodenv or node-build for that) - Proceed with
npm run docsagain