Drop support for Node.js 14 and 16, require >= 18.17.0

This commit is contained in:
Lovell Fuller 2023-09-22 17:27:54 +01:00
parent eefaa99872
commit ba20b8ada4
9 changed files with 80 additions and 69 deletions

View File

@ -3,14 +3,6 @@ version: 2.1
workflows: workflows:
build: build:
jobs: jobs:
- linux-arm64-glibc-node-14:
filters:
tags:
only: /^v.*/
- linux-arm64-musl-node-14:
filters:
tags:
only: /^v.*/
- linux-arm64-glibc-node-18: - linux-arm64-glibc-node-18:
filters: filters:
tags: tags:
@ -19,9 +11,17 @@ workflows:
filters: filters:
tags: tags:
only: /^v.*/ only: /^v.*/
- linux-arm64-glibc-node-20:
filters:
tags:
only: /^v.*/
- linux-arm64-musl-node-20:
filters:
tags:
only: /^v.*/
jobs: jobs:
linux-arm64-glibc-node-14: linux-arm64-glibc-node-18:
resource_class: arm.medium resource_class: arm.medium
machine: machine:
image: ubuntu-2004:current image: ubuntu-2004:current
@ -30,13 +30,14 @@ jobs:
- run: | - run: |
sudo docker run -dit --name sharp --volume "${PWD}:/mnt/sharp" --workdir /mnt/sharp arm64v8/debian:bullseye sudo docker run -dit --name sharp --volume "${PWD}:/mnt/sharp" --workdir /mnt/sharp arm64v8/debian:bullseye
sudo docker exec sharp sh -c "apt-get update && apt-get install -y build-essential git python3 curl fonts-noto-core" sudo docker exec sharp sh -c "apt-get update && apt-get install -y build-essential git python3 curl fonts-noto-core"
sudo docker exec sharp sh -c "curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -" sudo docker exec sharp sh -c "mkdir -p /etc/apt/keyrings"
sudo docker exec sharp sh -c "echo 'deb https://deb.nodesource.com/node_14.x sid main' >/etc/apt/sources.list.d/nodesource.list" sudo docker exec sharp sh -c "curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg"
sudo docker exec sharp sh -c "echo 'deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main' | tee /etc/apt/sources.list.d/nodesource.list"
sudo docker exec sharp sh -c "apt-get update && apt-get install -y nodejs" sudo docker exec sharp sh -c "apt-get update && apt-get install -y nodejs"
- run: sudo docker exec sharp sh -c "npm install --build-from-source --unsafe-perm" - run: sudo docker exec sharp sh -c "npm install --build-from-source"
- run: sudo docker exec sharp sh -c "npm test" - run: sudo docker exec sharp sh -c "npm test"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --runtime napi --target 7 --upload=$prebuild_upload\" || true" - run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --runtime napi --target 7 --upload=$prebuild_upload\" || true"
linux-arm64-glibc-node-18: linux-arm64-glibc-node-20:
resource_class: arm.medium resource_class: arm.medium
machine: machine:
image: ubuntu-2004:current image: ubuntu-2004:current
@ -45,25 +46,14 @@ jobs:
- run: | - run: |
sudo docker run -dit --name sharp --workdir /mnt/sharp arm64v8/debian:bullseye sudo docker run -dit --name sharp --workdir /mnt/sharp arm64v8/debian:bullseye
sudo docker exec sharp sh -c "apt-get update && apt-get install -y build-essential git python3 curl fonts-noto-core" sudo docker exec sharp sh -c "apt-get update && apt-get install -y build-essential git python3 curl fonts-noto-core"
sudo docker exec sharp sh -c "curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -" sudo docker exec sharp sh -c "mkdir -p /etc/apt/keyrings"
sudo docker exec sharp sh -c "echo 'deb https://deb.nodesource.com/node_18.x sid main' >/etc/apt/sources.list.d/nodesource.list" sudo docker exec sharp sh -c "curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg"
sudo docker exec sharp sh -c "echo 'deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main' | tee /etc/apt/sources.list.d/nodesource.list"
sudo docker exec sharp sh -c "apt-get update && apt-get install -y nodejs" sudo docker exec sharp sh -c "apt-get update && apt-get install -y nodejs"
sudo docker exec sharp sh -c "mkdir -p /mnt/sharp" sudo docker exec sharp sh -c "mkdir -p /mnt/sharp"
sudo docker cp . sharp:/mnt/sharp/. sudo docker cp . sharp:/mnt/sharp/.
- run: sudo docker exec sharp sh -c "npm install --build-from-source" - run: sudo docker exec sharp sh -c "npm install --build-from-source"
- run: sudo docker exec sharp sh -c "npm test" - run: sudo docker exec sharp sh -c "npm test"
linux-arm64-musl-node-14:
resource_class: arm.medium
machine:
image: ubuntu-2004:current
steps:
- checkout
- run: |
sudo docker run -dit --name sharp --volume "${PWD}:/mnt/sharp" --workdir /mnt/sharp node:14-alpine3.12
sudo docker exec sharp sh -c "apk add build-base git python3 font-noto --update-cache"
- run: sudo docker exec sharp sh -c "npm install --build-from-source --unsafe-perm"
- run: sudo docker exec sharp sh -c "npm test"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --runtime napi --target 7 --upload=$prebuild_upload\" || true"
linux-arm64-musl-node-18: linux-arm64-musl-node-18:
resource_class: arm.medium resource_class: arm.medium
machine: machine:
@ -71,7 +61,19 @@ jobs:
steps: steps:
- checkout - checkout
- run: | - run: |
sudo docker run -dit --name sharp --workdir /mnt/sharp node:18-alpine3.14 sudo docker run -dit --name sharp --volume "${PWD}:/mnt/sharp" --workdir /mnt/sharp node:18-alpine3.17
sudo docker exec sharp sh -c "apk add build-base git python3 font-noto --update-cache"
- run: sudo docker exec sharp sh -c "npm install --build-from-source"
- run: sudo docker exec sharp sh -c "npm test"
- run: "[[ -n $CIRCLE_TAG ]] && sudo docker exec --env prebuild_upload sharp sh -c \"npx prebuild --runtime napi --target 7 --upload=$prebuild_upload\" || true"
linux-arm64-musl-node-20:
resource_class: arm.medium
machine:
image: ubuntu-2004:current
steps:
- checkout
- run: |
sudo docker run -dit --name sharp --workdir /mnt/sharp node:20-alpine3.18
sudo docker exec sharp sh -c "apk add build-base git python3 font-noto --update-cache" sudo docker exec sharp sh -c "apk add build-base git python3 font-noto --update-cache"
sudo docker exec sharp sh -c "mkdir -p /mnt/sharp" sudo docker exec sharp sh -c "mkdir -p /mnt/sharp"
sudo docker cp . sharp:/mnt/sharp/. sudo docker cp . sharp:/mnt/sharp/.

View File

@ -11,6 +11,6 @@ task:
- pkg upgrade -y - pkg upgrade -y
- pkg install -y devel/git devel/pkgconf graphics/vips www/node20 www/npm - pkg install -y devel/git devel/pkgconf graphics/vips www/node20 www/npm
install_script: install_script:
- npm install --build-from-source --unsafe-perm - npm install --build-from-source
test_script: test_script:
- npm test - npm test

View File

@ -7,16 +7,18 @@ jobs:
CI: CI:
permissions: permissions:
contents: write # for npx prebuild to make release contents: write # for npx prebuild to make release
name: Node.js ${{ matrix.nodejs_version }} ${{ matrix.nodejs_arch }} ${{ matrix.prebuild && '- prebuild' }} name: Node.js ${{ matrix.nodejs_version }} ${{ matrix.platform }} ${{ matrix.prebuild && '- prebuild' }}
runs-on: macos-m1 runs-on: macos-m1
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- nodejs_version: 14 - nodejs_version: "^18.17.0"
nodejs_arch: x64 nodejs_arch: x64
- nodejs_version: 18 platform: darwin-x64
- nodejs_version: "^18.17.0"
nodejs_arch: arm64 nodejs_arch: arm64
platform: darwin-arm64
prebuild: true prebuild: true
defaults: defaults:
run: run:
@ -30,7 +32,7 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Install - name: Install
run: npm install --build-from-source --unsafe-perm run: npm install --build-from-source
- name: Test - name: Test
run: npm test run: npm test
- name: Prebuild - name: Prebuild

View File

@ -7,7 +7,7 @@ jobs:
CI: CI:
permissions: permissions:
contents: write # for npx prebuild to make release contents: write # for npx prebuild to make release
name: ${{ matrix.container || matrix.os }} - Node.js ${{ matrix.nodejs_version }} ${{ matrix.nodejs_arch }} ${{ matrix.prebuild && '- prebuild' }} name: ${{ matrix.container || matrix.os }} - Node.js ${{ matrix.platform }} ${{ matrix.nodejs_arch }} ${{ matrix.prebuild && '- prebuild' }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
container: ${{ matrix.container }} container: ${{ matrix.container }}
strategy: strategy:
@ -15,57 +15,54 @@ jobs:
matrix: matrix:
include: include:
- os: ubuntu-22.04 - os: ubuntu-22.04
container: centos:7 container: rockylinux:8
nodejs_version: 14 nodejs_version: "^18.17.0"
platform: linux-x64
prebuild: true prebuild: true
- os: ubuntu-22.04
container: centos:7
nodejs_version: 16
- os: ubuntu-22.04 - os: ubuntu-22.04
container: rockylinux:8 container: rockylinux:8
nodejs_version: 18 nodejs_version: "^20.3.0"
platform: linux-x64
- os: ubuntu-22.04 - os: ubuntu-22.04
container: node:14-alpine3.12 container: node:18-alpine3.17
platform: linuxmusl-x64
prebuild: true prebuild: true
- os: ubuntu-22.04 - os: ubuntu-22.04
container: node:16-alpine3.12 container: node:20-alpine3.18
- os: ubuntu-22.04 platform: linuxmusl-x64
container: node:18-alpine3.14
- os: macos-11 - os: macos-11
nodejs_version: 14 nodejs_version: "^18.17.0"
nodejs_arch: x64
platform: darwin-x64
prebuild: true prebuild: true
nodejs_arch: x64
- os: macos-11 - os: macos-11
nodejs_version: 16 nodejs_version: "^20.3.0"
nodejs_arch: x64
- os: macos-11
nodejs_version: 18
nodejs_arch: x64 nodejs_arch: x64
platform: darwin-x64
- os: windows-2019 - os: windows-2019
nodejs_version: 14 nodejs_version: "^18.17.0"
nodejs_arch: x86 nodejs_arch: x86
platform: win32-ia32
prebuild: true prebuild: true
- os: windows-2019 - os: windows-2019
nodejs_version: 16 nodejs_version: "^20.3.0"
nodejs_arch: x86 nodejs_arch: x86
platform: win32-ia32
- os: windows-2019 - os: windows-2019
nodejs_version: 18 nodejs_version: "^18.17.0"
nodejs_arch: x86
- os: windows-2019
nodejs_version: 14
nodejs_arch: x64 nodejs_arch: x64
platform: win32-x64
prebuild: true prebuild: true
- os: windows-2019 - os: windows-2019
nodejs_version: 16 nodejs_version: "^20.3.0"
nodejs_arch: x64
- os: windows-2019
nodejs_version: 18
nodejs_arch: x64 nodejs_arch: x64
platform: win32-x64
steps: steps:
- name: Dependencies (Linux glibc) - name: Dependencies (Linux glibc)
if: contains(matrix.container, 'centos') if: contains(matrix.container, 'centos')
run: | run: |
curl -sL https://rpm.nodesource.com/setup_${{ matrix.nodejs_version }}.x | bash - NODE_MAJOR="${{ contains(matrix.nodejs_version, '^18.') && '18' || '20' }}"
yum install -y https://rpm.nodesource.com/pub_${NODE_MAJOR}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum install -y centos-release-scl yum install -y centos-release-scl
yum install -y devtoolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts yum install -y devtoolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts
@ -73,8 +70,10 @@ jobs:
- name: Dependencies (Rocky Linux glibc) - name: Dependencies (Rocky Linux glibc)
if: contains(matrix.container, 'rockylinux') if: contains(matrix.container, 'rockylinux')
run: | run: |
curl -sL https://rpm.nodesource.com/setup_${{ matrix.nodejs_version }}.x | bash - NODE_MAJOR="${{ contains(matrix.nodejs_version, '^18.') && '18' || '20' }}"
dnf install -y gcc-toolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts dnf install -y https://rpm.nodesource.com/pub_${NODE_MAJOR}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
dnf install -y --setopt=nodesource-nodejs.module_hotfixes=1 nodejs
dnf install -y gcc-toolset-11-gcc-c++ make git python3 fontconfig google-noto-sans-fonts
echo "/opt/rh/gcc-toolset-11/root/usr/bin" >> $GITHUB_PATH echo "/opt/rh/gcc-toolset-11/root/usr/bin" >> $GITHUB_PATH
- name: Dependencies (Linux musl) - name: Dependencies (Linux musl)
if: contains(matrix.container, 'alpine') if: contains(matrix.container, 'alpine')
@ -96,7 +95,7 @@ jobs:
if: matrix.container if: matrix.container
run: chown root.root . run: chown root.root .
- name: Install - name: Install
run: npm install --build-from-source --unsafe-perm run: npm install --build-from-source
- name: Test - name: Test
run: npm test run: npm test
- name: Prebuild - name: Prebuild

View File

@ -16,7 +16,7 @@ Lanczos resampling ensures quality is not sacrificed for speed.
As well as image resizing, operations such as As well as image resizing, operations such as
rotation, extraction, compositing and gamma correction are available. rotation, extraction, compositing and gamma correction are available.
Most modern macOS, Windows and Linux systems running Node.js >= 14.15.0 Most modern macOS, Windows and Linux systems running Node.js >= 18.17.0
do not require any additional install or runtime dependencies. do not require any additional install or runtime dependencies.
## Documentation ## Documentation

View File

@ -1,5 +1,13 @@
# Changelog # Changelog
## v0.33 - *gauge*
Requires libvips v8.14.5
### v0.33.0 - TBD
* Drop support for Node.js 14 and 16, now requires Node.js >= 18.17.0
## v0.32 - *flow* ## v0.32 - *flow*
Requires libvips v8.14.5 Requires libvips v8.14.5

View File

@ -10,7 +10,7 @@ yarn add sharp
## Prerequisites ## Prerequisites
* Node.js >= 14.15.0 * Node.js >= 18.17.0
## Prebuilt binaries ## Prebuilt binaries

File diff suppressed because one or more lines are too long

View File

@ -134,7 +134,7 @@
"dependencies": { "dependencies": {
"color": "^4.2.3", "color": "^4.2.3",
"detect-libc": "^2.0.2", "detect-libc": "^2.0.2",
"node-addon-api": "^6.1.0", "node-addon-api": "^7.0.0",
"prebuild-install": "^7.1.1", "prebuild-install": "^7.1.1",
"semver": "^7.5.4", "semver": "^7.5.4",
"simple-get": "^4.0.1", "simple-get": "^4.0.1",
@ -177,7 +177,7 @@
"target": 7 "target": 7
}, },
"engines": { "engines": {
"node": ">=14.15.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"