2021-05-24 20:57:01 +00:00
|
|
|
# Contributing
|
|
|
|
|
2021-07-27 12:44:38 +00:00
|
|
|
## Prerequisite
|
|
|
|
```shell
|
|
|
|
node: "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
|
|
yarn: "^1.22.10"
|
|
|
|
# otherwise, build will fail
|
|
|
|
```
|
|
|
|
|
2021-06-08 15:10:56 +00:00
|
|
|
## Setting Up the Monorepo
|
|
|
|
|
|
|
|
```shell
|
|
|
|
# git clone && cd ...
|
|
|
|
yarn install
|
2021-06-09 19:35:28 +00:00
|
|
|
yarn build
|
2021-06-08 15:10:56 +00:00
|
|
|
```
|
|
|
|
|
2021-06-09 19:39:19 +00:00
|
|
|
Most of the packages have a dev script that will recompile when a file changes. For example when working on the `astro` package you can run:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
yarn workspace astro run dev
|
|
|
|
```
|
|
|
|
|
2021-05-24 20:57:01 +00:00
|
|
|
## Making Pull Requests
|
|
|
|
|
|
|
|
When making a pull request, add a changeset which helps with releases.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
yarn changeset
|
|
|
|
```
|
|
|
|
|
|
|
|
This will prompt you asking what type of change was made.
|
|
|
|
|
|
|
|
## Releases
|
|
|
|
|
|
|
|
For those contributors that have access to publish to npm, the following is how you do releases.
|
|
|
|
|
|
|
|
From the `main` branch do a pull, install and build:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
git pull origin main
|
|
|
|
yarn install
|
|
|
|
yarn build
|
|
|
|
```
|
|
|
|
|
|
|
|
Then bump the versions:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
yarn changeset version
|
|
|
|
```
|
|
|
|
|
|
|
|
This should change package.json bumping version numbers and update changelogs. Inspect these to make sure they are what you expect.
|
|
|
|
|
|
|
|
Commit and push these changes, then run an npm publish for each of the packages that have changed.
|
|
|
|
|
2021-06-07 20:05:13 +00:00
|
|
|
> **Important**! Ordering publishes can be important. If `@astrojs/parser` changes you should publish that before `astro`, for example.
|
2021-05-24 20:57:01 +00:00
|
|
|
|
|
|
|
```shell
|
|
|
|
cd packages/astro
|
|
|
|
npm publish
|
2021-05-24 20:58:18 +00:00
|
|
|
```
|
2021-05-26 15:31:53 +00:00
|
|
|
|
|
|
|
## Running benchmarks
|
|
|
|
|
|
|
|
We have benchmarks to keep performance under control. You can run these by running (from the project root):
|
|
|
|
|
|
|
|
```shell
|
|
|
|
yarn workspace astro run benchmark
|
|
|
|
```
|
|
|
|
|
2021-05-26 15:33:35 +00:00
|
|
|
Which will fail if the performance has regressed by **10%** or more.
|
2021-05-26 15:31:53 +00:00
|
|
|
|
|
|
|
To update the times cd into the `packages/astro` folder and run the following:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
node test/benchmark/build.bench.js --save
|
|
|
|
node test/benchmark/dev.bench.js --save
|
|
|
|
```
|
|
|
|
|
2021-05-26 15:33:35 +00:00
|
|
|
Which will update the build and dev benchmarks.
|