This repo has moved to https://github.com/heroku/buildpacks-node.
This buildpack builds on top of the existing Node.js Engine Cloud Native Buildpack. It runs subsequent scripts after Node is install.
- Run automatically
yarn install
- Run when configured in
package.json
yarn build
oryarn heroku-postbuild
Using brew
(assuming development is done on MacOS), install pack
.
brew tap buildpack/tap
brew install pack
If you're using Windows or Linux, follow instructions here.
Right now, we are prototyping with a local version of the buildpack. Clone it to your machine.
git clone [email protected]:heroku/nodejs-yarn-buildpack.git
Clone the Heroku Node.js Engine Cloud Native Buildpack.
cd .. # change from nodejs-npm-buildpack directory
git clone [email protected]:heroku/nodejs-engine-buildpack.git
Using pack, you're ready to create an image from the buildpack and source code. You will need to add flags that point to the path of the source code (--path
) and the paths of the buildpacks (--buildpack
).
cd nodejs-yarn-buildpack
pack build TEST_IMAGE_NAME --path ../TEST_REPO_PATH --buildpack ../nodejs-engine-buildpack --buildpack ../nodejs-yarn-buildpack
You can also create a builder.toml
file that will have explicit directions when creating a buildpack. This is useful when there are multiple "detect" paths a build can take (ie. yarn vs. npm commands).
In a directory outside of this buildpack, create a builder file:
cd ..
mkdir heroku_nodejs_builder
touch heroku_nodejs_builder/builder.toml
For local development, you'll want the file to look like this:
[[buildpacks]]
id = "heroku/nodejs-engine-buildpack"
uri = "../nodejs-engine-buildpack"
[[buildpacks]]
id = "heroku/nodejs-yarn-buildpack"
uri = "../nodejs-yarn-buildpack"
[[order]]
group = [
{ id = "heroku/nodejs-engine-buildpack", version = "0.0.1" },
{ id = "heroku/nodejs-yarn-buildpack", version = "0.0.1" }
]
[stack]
id = "heroku-18"
build-image = "heroku/pack:18"
run-image = "heroku/pack:18"
Create the builder with pack
:
pack create-builder nodejs --builder-config ../heroku-nodejs-builder/builder.toml
Now you can use the builder image instead of chaining the buildpacks.
pack build TEST_IMAGE_NAME --path ../TEST_REPO_PATH --builder nodejs
- Open a pull request.
- Make update to
CHANGELOG.md
undermaster
with a description (PR title is fine) of the change, the PR number and link to PR. - Let the tests run on CI. When tests pass and PR is approved, the branch is ready to be merged.
- Merge branch to
master
.
Note: if you're not a contributor to this project, a contributor will have to make the release for you.
- Create a new branch (ie.
1.14.2-release
). - Update the version in the
buildpack.toml
. - Move the changes from
master
to a new header with the version and date (ie.1.14.2 (2020-02-30)
). - Open a pull request.
- Let the tests run on CI. When tests pass and PR is approved, the branch is ready to be merged.
- Merge branch to
master
. - Pull down
master
to local machine. - Tag the current
master
with the version. (git tag v1.14.2
) - Push up to GitHub. (
git push origin master --tags
) CI will run the suite and create a new release on successful run.
- buildpacks: provide framework and a runtime for source code. Read more here.
- OCI image: OCI (Open Container Initiative) is a project to create open sourced standards for OS-level virtualization, most importantly in Linux containers.