Add support for prebuilt Windows ARM64 binaries #4375

This commit is contained in:
Hans 2025-04-17 11:53:05 +08:00 committed by Lovell Fuller
parent 73bec629cf
commit e922ef7450
9 changed files with 63 additions and 2 deletions

View File

@ -110,6 +110,17 @@ jobs:
nodejs_version: "^22.9.0" nodejs_version: "^22.9.0"
nodejs_version_major: 22 nodejs_version_major: 22
platform: win32-x64 platform: win32-x64
- os: windows-11-arm
nodejs_arch: arm64
nodejs_version: "^20.3.0"
nodejs_version_major: 20
platform: win32-arm64
prebuild: true
- os: windows-11-arm
nodejs_arch: arm64
nodejs_version: "^22.9.0"
nodejs_version_major: 22
platform: win32-arm64
steps: steps:
- name: Dependencies (Rocky Linux glibc) - name: Dependencies (Rocky Linux glibc)
if: contains(matrix.container, 'rockylinux') if: contains(matrix.container, 'rockylinux')

View File

@ -317,3 +317,6 @@ GitHub: https://github.com/florentzabera
Name: Quentin Pinçon Name: Quentin Pinçon
GitHub: https://github.com/qpincon GitHub: https://github.com/qpincon
Name: Hans Chen
GitHub: https://github.com/hans00

View File

@ -14,6 +14,10 @@ Requires libvips v8.16.1
* Ensure `pdfBackground` constructor property is used. * Ensure `pdfBackground` constructor property is used.
[#4207](https://github.com/lovell/sharp/pull/4207) [#4207](https://github.com/lovell/sharp/pull/4207)
* Add support for prebuilt Windows ARM64 binaries.
[#4375](https://github.com/lovell/sharp/pull/4375)
[@hans00](https://github.com/hans00)
* TypeScript: Ensure `smartDeblock` property is included in WebP definition. * TypeScript: Ensure `smartDeblock` property is included in WebP definition.
[#4387](https://github.com/lovell/sharp/pull/4387) [#4387](https://github.com/lovell/sharp/pull/4387)
[@Stephen-X](https://github.com/Stephen-X) [@Stephen-X](https://github.com/Stephen-X)

View File

@ -53,6 +53,7 @@ Ready-compiled sharp and libvips binaries are provided for use on the most commo
* Linux x64 (glibc >= 2.26, musl >= 1.2.2, CPU with SSE4.2) * Linux x64 (glibc >= 2.26, musl >= 1.2.2, CPU with SSE4.2)
* Windows x64 * Windows x64
* Windows x86 * Windows x86
* Windows ARM64
This provides support for the This provides support for the
JPEG, PNG, WebP, AVIF (limited to 8-bit depth), TIFF, GIF and SVG (input) image formats. JPEG, PNG, WebP, AVIF (limited to 8-bit depth), TIFF, GIF and SVG (input) image formats.

View File

@ -20,7 +20,7 @@ const prebuiltPlatforms = [
'darwin-arm64', 'darwin-x64', 'darwin-arm64', 'darwin-x64',
'linux-arm', 'linux-arm64', 'linux-s390x', 'linux-x64', 'linux-arm', 'linux-arm64', 'linux-s390x', 'linux-x64',
'linuxmusl-arm64', 'linuxmusl-x64', 'linuxmusl-arm64', 'linuxmusl-x64',
'win32-ia32', 'win32-x64' 'win32-arm64', 'win32-ia32', 'win32-x64'
]; ];
const spawnSyncOptions = { const spawnSyncOptions = {

View File

@ -13,6 +13,7 @@
"linuxmusl-arm64", "linuxmusl-arm64",
"linuxmusl-x64", "linuxmusl-x64",
"wasm32", "wasm32",
"win32-arm64",
"win32-ia32", "win32-ia32",
"win32-x64" "win32-x64"
] ]

View File

@ -0,0 +1,39 @@
{
"name": "@img/sharp-win32-arm64",
"version": "0.34.1",
"description": "Prebuilt sharp for use with Windows 64-bit ARM",
"author": "Lovell Fuller <npm@lovell.info>",
"homepage": "https://sharp.pixelplumbing.com",
"repository": {
"type": "git",
"url": "git+https://github.com/lovell/sharp.git",
"directory": "npm/win32-arm64"
},
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"funding": {
"url": "https://opencollective.com/libvips"
},
"preferUnplugged": true,
"files": [
"lib",
"versions.json"
],
"publishConfig": {
"access": "public"
},
"type": "commonjs",
"exports": {
"./sharp.node": "./lib/sharp-win32-arm64.node",
"./package": "./package.json",
"./versions": "./versions.json"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"os": [
"win32"
],
"cpu": [
"arm64"
]
}

View File

@ -160,6 +160,7 @@
"@img/sharp-linuxmusl-arm64": "0.34.1", "@img/sharp-linuxmusl-arm64": "0.34.1",
"@img/sharp-linuxmusl-x64": "0.34.1", "@img/sharp-linuxmusl-x64": "0.34.1",
"@img/sharp-wasm32": "0.34.1", "@img/sharp-wasm32": "0.34.1",
"@img/sharp-win32-arm64": "0.34.1",
"@img/sharp-win32-ia32": "0.34.1", "@img/sharp-win32-ia32": "0.34.1",
"@img/sharp-win32-x64": "0.34.1" "@img/sharp-win32-x64": "0.34.1"
}, },
@ -167,6 +168,7 @@
"@emnapi/runtime": "^1.4.0", "@emnapi/runtime": "^1.4.0",
"@img/sharp-libvips-dev": "1.1.0", "@img/sharp-libvips-dev": "1.1.0",
"@img/sharp-libvips-dev-wasm32": "1.1.0", "@img/sharp-libvips-dev-wasm32": "1.1.0",
"@img/sharp-libvips-win32-arm64": "1.1.0",
"@img/sharp-libvips-win32-ia32": "1.1.0", "@img/sharp-libvips-win32-ia32": "1.1.0",
"@img/sharp-libvips-win32-x64": "1.1.0", "@img/sharp-libvips-win32-x64": "1.1.0",
"@types/node": "*", "@types/node": "*",

View File

@ -59,7 +59,7 @@ describe('Text to image', function () {
assert.strictEqual('png', info.format); assert.strictEqual('png', info.format);
assert.strictEqual(3, info.channels); assert.strictEqual(3, info.channels);
assert.ok(inRange(info.width, 400, 600), `Actual width ${info.width}`); assert.ok(inRange(info.width, 400, 600), `Actual width ${info.width}`);
assert.ok(inRange(info.height, 300, 500), `Actual height ${info.height}`); assert.ok(inRange(info.height, 290, 500), `Actual height ${info.height}`);
assert.ok(inRange(info.textAutofitDpi, 900, 1300), `Actual textAutofitDpi ${info.textAutofitDpi}`); assert.ok(inRange(info.textAutofitDpi, 900, 1300), `Actual textAutofitDpi ${info.textAutofitDpi}`);
done(); done();
}); });