Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added nodejs-npm-engine Buildpack #623

Merged
merged 14 commits into from
Oct 17, 2023
Merged

Conversation

colincasey
Copy link
Contributor

@colincasey colincasey commented Aug 15, 2023

Initial commit of nodejs-npm-engine npm buildpack which replaces partial functionality from the existing bash-based npm buildpack.

The nodejs-npm-engine buildpack adds support for Heroku's existing engines.npm entry in package.json which allows an application to specify a version of npm to be installed. The nodejs-engine buildpack has also been modified to provide npm as a default system version. This will ensure that there will either be the system or an application-specified version of npm available before installing npm modules.

Example Buildpack Output

# Heroku npm Engine Buildpack

- Installing npm
  - Found `engines.npm` version `9.6.6` declared in `package.json`
  - Resolved version `9.6.6` to `9.6.6`
  - Downloading `https://heroku-nodebin.s3.us-east-1.amazonaws.com/npm/release/npm-v9.6.6.tar.gz` .... (1.221s)
  - Removing existing npm
  - Installing requested npm
  - Successfully installed `[email protected]`
- Done (finished in 6.702s)

Initial commit of `nodejs-npm-engine` npm buildpack which replaces partial functionality from the existing bash-based `npm` buildpack.

The `nodejs-npm-engine` buildpack adds support for Heroku's existing `engines.npm` entry in `package.json` which allows an application to specify a version of `npm` to be installed. The `nodejs-engine` buildpack has also been modified to provide `npm` as a default system version. This will ensure that there will either be the system or an application-specified version of `npm` available before installing `npm` modules.
@colincasey colincasey added the enhancement New feature or request label Aug 15, 2023
@colincasey colincasey self-assigned this Aug 15, 2023
@colincasey colincasey requested a review from a team as a code owner August 15, 2023 20:17
@colincasey colincasey marked this pull request as draft August 15, 2023 21:37
@joshwlewis
Copy link
Member

Looks great so far!

* main:
  Bump chrono from 0.4.26 to 0.4.28 (#642)
  Bump serde from 1.0.183 to 1.0.188 (#643)
  Bump url from 2.4.0 to 2.4.1 (#644)
  Bump regex from 1.9.3 to 1.9.4 (#645)
  Skip `mirror-distribution` job if there are no versions (#628)
  Bump Swatinem/rust-cache from 2.5.1 to 2.6.2 (#640)
  Update to libcnb 0.14.0 (#638)
  Update Procfile CNB to v2.0.1 (#639)
  Bump buildpacks/github-actions from 5.3.0 to 5.4.0 (#636)
  Bump regex from 1.9.1 to 1.9.3 (#635)
  Bump serde_json from 1.0.104 to 1.0.105 (#634)
  Bump thiserror from 1.0.44 to 1.0.47 (#633)
  Bump toml from 0.7.5 to 0.7.6 (#632)
  Bump anyhow from 1.0.71 to 1.0.75 (#631)
  Bump tempfile from 3.7.0 to 3.7.1 (#630)
  Bump serde from 1.0.166 to 1.0.168 (#629)
  Ignore yarn 2.4.3 (#627)
  Fix inventory update order (#621)

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	test_support/src/lib.rs
* main: (31 commits)
  Add `npm` to `nodejs-engine` build plan (#622)
  Remove cutlass job from CI (#675)
  Update Inventory for heroku/nodejs-npm-engine (#624)
  Remove cutlass integration tests (#674)
  Update Inventory for heroku/nodejs-engine (#671)
  Update Inventory for heroku/nodejs-yarn (#670)
  Prepare integration tests to run under a single builder (#663)
  Bump Swatinem/rust-cache from 2.6.2 to 2.7.0 (#665)
  Bump actions/checkout from 3 to 4 (#664)
  Bump regex from 1.9.5 to 1.9.6 (#666)
  Bump thiserror from 1.0.48 to 1.0.49 (#667)
  Bump ureq from 2.7.1 to 2.8.0 (#668)
  Bump serde_json from 1.0.105 to 1.0.107 (#669)
  Fix CNB builder repo URL (#672)
  Fix non-existent builder Docker image name (#673)
  Updates `libcnb` to 0.15.0 (#662)
  Switch tests from `heroku/buildpacks:20` to `heroku/builder:20` (#660)
  Prepare release v1.1.6 (#658)
  Bump regex from 1.9.4 to 1.9.5 (#656)
  Bump indoc from 2.0.3 to 2.0.4 (#657)
  ...

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	buildpacks/nodejs-npm-engine/CHANGELOG.md
#	test_support/Cargo.toml
#	test_support/src/lib.rs
@colincasey colincasey marked this pull request as ready for review October 4, 2023 15:54
* main:
  Update Inventory for heroku/nodejs-engine (#681)
  Update Inventory for heroku/nodejs-npm-engine (#678)
  Bump the rust-dependencies group with 2 updates (#680)
  Group minor/patch version Rust Dependabot updates into one PR (#679)

# Conflicts:
#	Cargo.lock
#	buildpacks/nodejs-npm-engine/CHANGELOG.md
buildpacks/nodejs-npm-engine/src/errors.rs Outdated Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Outdated Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Outdated Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Show resolved Hide resolved
buildpacks/nodejs-npm-engine/src/errors.rs Show resolved Hide resolved
* main:
  Prepare release v1.1.7 (#683)
  Update Inventory for heroku/nodejs-engine (#682)
@colincasey colincasey enabled auto-merge (squash) October 17, 2023 19:18
@colincasey colincasey merged commit e2a8e8f into main Oct 17, 2023
19 checks passed
@colincasey colincasey deleted the npm-buildpacks/nodejs-npm-engine branch October 17, 2023 19:24
colincasey added a commit that referenced this pull request Oct 17, 2023
* main:
  Added `nodejs-npm-engine` Buildpack (#623)

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	README.md
#	meta-buildpacks/nodejs/buildpack.toml
#	meta-buildpacks/nodejs/package.toml
colincasey added a commit that referenced this pull request Oct 18, 2023
* main:
  Added `nodejs-npm-install` Buildpack (#625)
  Added `nodejs-npm-engine` Buildpack (#623)
  Prepare release v1.1.7 (#683)
  Update Inventory for heroku/nodejs-engine (#682)
  Update Inventory for heroku/nodejs-engine (#681)
  Update Inventory for heroku/nodejs-npm-engine (#678)
  Bump the rust-dependencies group with 2 updates (#680)
  Group minor/patch version Rust Dependabot updates into one PR (#679)
  Add `npm` to `nodejs-engine` build plan (#622)

# Conflicts:
#	buildpacks/nodejs-engine/tests/fixtures/node-with-indexjs/package-lock.json
#	buildpacks/nodejs-engine/tests/fixtures/node-with-serverjs/package-lock.json
#	buildpacks/nodejs-engine/tests/integration_test.rs
colincasey added a commit that referenced this pull request Oct 24, 2023
The composite buildpack `heroku/nodejs` should have had entries added for the new npm buildpacks merged in PRs:
- #623
- #625
- #685
colincasey added a commit that referenced this pull request Oct 24, 2023
The composite buildpack `heroku/nodejs` should have had entries added for the new npm buildpacks merged in PRs:
- #623
- #625
- #685
colincasey added a commit that referenced this pull request Oct 24, 2023
* Added missing changelog entries for npm buildpacks

The composite buildpack `heroku/nodejs` should have had entries added for the new npm buildpacks merged in PRs:
- #623
- #625
- #685

* Drop extra hyphen

Co-authored-by: Ed Morley <[email protected]>

---------

Co-authored-by: Josh W Lewis <[email protected]>
Co-authored-by: Ed Morley <[email protected]>
@heroku-linguist heroku-linguist bot mentioned this pull request Oct 24, 2023
heroku-linguist bot added a commit that referenced this pull request Oct 24, 2023
* Prepare release v2.0.0

## heroku/nodejs

### Added

- Added `heroku/nodejs-npm-engine` to the buildpack group for npm support ([#623](#623))
- Added `heroku/nodejs-npm-install` to the buildpack group for npm support ([#625](#625))
- Added `heroku/nodejs-corepack` to the buildpack group for npm support ([#685](#685))

### Changed

- Updated buildpack display name, description and keywords. ([#692](#692))
- Updated `heroku/nodejs-corepack` to `2.0.0`.
- Updated `heroku/nodejs-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-install` to `2.0.0`.
- Updated `heroku/nodejs-pnpm-install` to `2.0.0`.
- Updated `heroku/nodejs-yarn` to `2.0.0`.

### Removed

- Removed the deprecated `heroku/nodejs-npm` from the buildpack group for npm support ([#625](#625))
- Removed `heroku/procfile`, since it's being added directly to the Heroku builder images instead. If you override the Heroku builder images' default buildpack detection order (or use this buildpack with a non-Heroku builder image), you will need to append `heroku/procfile` to your buildpacks list. ([#696](#696))

## heroku/nodejs-corepack

### Added

- Added support for using corepack to install npm. ([#685](#685))

### Changed

- Updated buildpack description and keywords. ([#692](#692))
- Switched from supporting explicitly named stacks to supporting the wildcard stack. ([#693](#693))

## heroku/nodejs-engine

### Added

- Added Node.js version 21.0.0.

### Changed

- Updated buildpack description and keywords. ([#692](#692))

### Removed

- Dropped support for the end of life `io.buildpacks.stacks.bionic` stack. ([#693](#693))

## heroku/nodejs-function

### Added

- Added `heroku/nodejs-npm-engine` ([#686](#686))
- Added `heroku/nodejs-npm-install` ([#686](#686))

### Removed

- Removed `heroku/nodejs-npm` ([#686](#686))

### Changed

- Updated buildpack display name and description. ([#692](#692))
- Updated `heroku/nodejs-engine` to `2.0.0`.
- Updated `heroku/nodejs-function-invoker` to `2.0.0`.
- Updated `heroku/nodejs-npm-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-install` to `2.0.0`.

## heroku/nodejs-function-invoker

### Changed

- Updated buildpack display name, description and keywords. ([#692](#692))

## heroku/nodejs-npm

### Changed

- Updated buildpack display name, description and keywords. ([#692](#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](#693))

## heroku/nodejs-npm-engine

### Added

- Initial release

## heroku/nodejs-npm-install

### Added

- Initial release

## heroku/nodejs-pnpm-install

### Changed

- Updated buildpack description and keywords. ([#692](#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](#693))

## heroku/nodejs-yarn

### Changed

- Updated buildpack description and keywords. ([#692](#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](#693))

* Replace non-breaking spaces with normal spaces

Yey copy-paste from GitHub PR diffs.

---------

Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: Ed Morley <[email protected]>
heroku-linguist bot added a commit to heroku/cnb-builder-images that referenced this pull request Oct 25, 2023
* Update heroku/buildpacks-nodejs to v2.0.0

## heroku/nodejs

### Added

- Added `heroku/nodejs-npm-engine` to the buildpack group for npm support ([#623](heroku/buildpacks-nodejs#623))
- Added `heroku/nodejs-npm-install` to the buildpack group for npm support ([#625](heroku/buildpacks-nodejs#625))
- Added `heroku/nodejs-corepack` to the buildpack group for npm support ([#685](heroku/buildpacks-nodejs#685))

### Changed

- Updated buildpack display name, description and keywords. ([#692](heroku/buildpacks-nodejs#692))
- Updated `heroku/nodejs-corepack` to `2.0.0`.
- Updated `heroku/nodejs-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-install` to `2.0.0`.
- Updated `heroku/nodejs-pnpm-install` to `2.0.0`.
- Updated `heroku/nodejs-yarn` to `2.0.0`.

### Removed

- Removed the deprecated `heroku/nodejs-npm` from the buildpack group for npm support ([#625](heroku/buildpacks-nodejs#625))
- Removed `heroku/procfile`, since it's being added directly to the Heroku builder images instead. If you override the Heroku builder images' default buildpack detection order (or use this buildpack with a non-Heroku builder image), you will need to append `heroku/procfile` to your buildpacks list. ([#696](heroku/buildpacks-nodejs#696))

## heroku/nodejs-corepack

### Added

- Added support for using corepack to install npm. ([#685](heroku/buildpacks-nodejs#685))

### Changed

- Updated buildpack description and keywords. ([#692](heroku/buildpacks-nodejs#692))
- Switched from supporting explicitly named stacks to supporting the wildcard stack. ([#693](heroku/buildpacks-nodejs#693))

## heroku/nodejs-engine

### Added

- Added Node.js version 21.0.0.

### Changed

- Updated buildpack description and keywords. ([#692](heroku/buildpacks-nodejs#692))

### Removed

- Dropped support for the end of life `io.buildpacks.stacks.bionic` stack. ([#693](heroku/buildpacks-nodejs#693))

## heroku/nodejs-function

### Added

- Added `heroku/nodejs-npm-engine` ([#686](heroku/buildpacks-nodejs#686))
- Added `heroku/nodejs-npm-install` ([#686](heroku/buildpacks-nodejs#686))

### Removed

- Removed `heroku/nodejs-npm` ([#686](heroku/buildpacks-nodejs#686))

### Changed

- Updated buildpack display name and description. ([#692](heroku/buildpacks-nodejs#692))
- Updated `heroku/nodejs-engine` to `2.0.0`.
- Updated `heroku/nodejs-function-invoker` to `2.0.0`.
- Updated `heroku/nodejs-npm-engine` to `2.0.0`.
- Updated `heroku/nodejs-npm-install` to `2.0.0`.

## heroku/nodejs-function-invoker

### Changed

- Updated buildpack display name, description and keywords. ([#692](heroku/buildpacks-nodejs#692))

## heroku/nodejs-npm

### Changed

- Updated buildpack display name, description and keywords. ([#692](heroku/buildpacks-nodejs#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](heroku/buildpacks-nodejs#693))

## heroku/nodejs-npm-engine

### Added

- Initial release

## heroku/nodejs-npm-install

### Added

- Initial release

## heroku/nodejs-pnpm-install

### Changed

- Updated buildpack description and keywords. ([#692](heroku/buildpacks-nodejs#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](heroku/buildpacks-nodejs#693))

## heroku/nodejs-yarn

### Changed

- Updated buildpack description and keywords. ([#692](heroku/buildpacks-nodejs#692))

### Removed

- Removed redundant explicitly named supported stacks. ([#693](heroku/buildpacks-nodejs#693))

* Add `heroku/procfile` to the `heroku/nodejs` order groups

Since the Procfile CNB is no longer included in the `heroku/nodejs` as of:
heroku/buildpacks-nodejs#696

---------

Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: Ed Morley <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants