Fungerar med den JavaScript-pakethanterare du väljer.
⚠️ Se till att din pakethanterare är konfigurerad för att installera valfria beroenden
Om en låsfil för pakethanterare måste stödja flera plattformar, se avsnittet över plattformar för att hjälpa dig att avgöra vilken pakethanterare som är lämplig.
npm install sharp
pnpm add sharp
yarn add sharp
# yarn v1 (maintenance mode)
Yarn add sharp --ignore-engines
bun add sharp
deno run --allow-ffi ...
Förutsättningar
- En Node-API v9-kompatibel körtid, som Node.js ^18.17.0 eller >=20.3.0.
Förbyggda binärer
Kompilerade skarpa och libvips-binärer finns tillgängliga för de vanligaste plattformarna:
- MacOS x64 (>= 10.13)
- MacOS ARM64
- Linux ARM (glibc >= 2.28)
- Linux ARM64 (glibc >= 2.26, musl >= 1.2.2)
- Linux s390x (glibc >= 2.31)
- Linux x64 (glibc >= 2.26, musl >= 1.2.2, CPU med SSE4.2)
- Windows x64
- Windows x86
Detta ger stöd för bildformaten JPEG, PNG, WebP, AVIF (begränsat till 8-bitars djup), TIFF, GIF och SVG (ingång).
Cross-plattform
Vid installationstidpunkten kommer pakethanteraren automatiskt att välja förbyggda binärer för den aktuella OS-plattformen och CPU-arkitekturen om tillgänglig.
Vissa pakethanterare stöder flera plattformar och arkitekturer i samma installationsträd och/eller använder samma låsfil.
Npm v10+
⚠️ npm package-lock.json fil kan orsaka installationsproblem på grund av npm bugg#4828
Begränsat stöd via flaggorna --os, --cpu och --libc.
Så här stöder du macOS med Intel x64- och ARM64-processorer:
npm install --cpu=x64 --os=darwin sharp
Npm install --cpu=arm64 --os=darwin sharp
När korsmålet är Linux måste C-standardbiblioteket anges.
För att stödja glibc (t.ex. Debian) och musl (t.ex. Alpine) Linux med Intel x64-processorer:
npm install --cpu=x64 --os=linux --libc=glibc sharp
Npm install --cpu=x64 --os=linux --libc=musl sharp
Yarn v3+
Använd konfigurationen som stöds Architectures.
Pnpm v8+
Använd konfigurationen som stöds Architectures.
Anpassade libvips
För att använda en anpassad, globalt installerad version av libvips istället för den medföljande binära filen, se till att det är åtminstone den version som anges under engines.libvips i filen package.json och att den kan hittas med pkg-config --modversion vips- cpp.
För hjälp med att kompilera libvips och dess beroenden, se bygga libvips från källan .
Att använda en globalt installerad libvips stöds inte på Windows och macOS när du kör Node.js under Rosetta.
Bygg från källan
Den här modulen kommer att kompileras från källan när npm installerar den om:
- En globalt installerad libvips har upptäckts, eller
- När flaggan npm install --build-from-source används.
Logiken för att upptäcka en globalt installerad libvips kan hoppas över genom att ställa in miljövariablerna SHARP_IGNORE_GLOBAL_LIBVIPS (försök aldrig använda den) eller SHARP_FORCE_GLOBAL_LIBVIPS (försök alltid använda den även om den saknas eller är föråldrad).
Att bygga från källa kräver:
- C++11 kompilator
- Node-addon-apiVersion 7+
- Node-gypVersion 9+ och dess beroenden
Dessa beroenden kontrolleras under installationen. Om node-addon-api eller node-gyp inte hittas, försök att lägga till dem via:
npm install --save node-addon-api node-gyp
För korskompilering, använd --platform, --arch och --libc npm-flaggor (eller miljövariablerna npm_config_platform, npm_config_arch och npm_config_libc) för att konfigurera målmiljön.
WebAssembly
Experimentellt stöd för flertrådiga Wasm-körtider via Workers.
Stöds inte för användning i webbläsare.
Inbyggd textåtergivning stöds inte.
npm install --cpu=wasm32 sharp
FreeBSD
Vips-paketet måste installeras innan du kör npm installation.
pkg install -y pkgconf vips
cd /usr/ports/graphics/vips/ && make install clean
Linux Memory Allocator
Standardminnesallokatorn på de flesta glibc-baserade Linux-system (t.ex. Debian, Red Hat) är inte lämplig för långvariga flertrådade processer som involverar många små minnesallokeringar.
Av denna anledning kommer sharp som standard att begränsa användningen av trådbaserad samtidighet när glibc-allokatorn detekteras under körning.
För att undvika fragmentering och förbättra prestanda på dessa system, rekommenderas användning av en alternativ minnesallokator som jemalloc.
Användare av musl-baserade Linux (som Alpine) och icke-Linux-system påverkas inte.
AWS Lambda
Katalogen node_modules i distributionspaketet måste innehålla binärer för antingen linux-x64- eller linux-arm64-plattformarna beroende på den valda arkitekturen.
När du bygger ditt distributionspaket på en dator som skiljer sig från målarkitekturen, se avsnittet över plattformar för att hjälpa dig att avgöra vilken pakethanterare som är lämplig och hur den ska konfigureras.
Vissa pakethanterare använder symboliska länkar men AWS Lambda stöder inte dessa inom distributionspaket.
Välj det största tillgängliga minnet för att få bästa prestanda. En 1536 MB-funktion ger ~12 gånger mer CPU-tid än en 128 MB-funktion.
När du integrerar med AWS API Gateway, se till att den är konfigurerad med relevanta binära mediatyper.
Bundler
Webpack
Se till att skarp är utesluten från buntning via den externa konfigurationen.
externals: {
'sharp': 'commonjs sharp'
}
Esbuild
Se till att sharp utesluts från buntning via den externa konfigurationen.
buildSync({
entryPoints: ['app.js'],
bundle: true,
platform: 'node',
external: ['sharp'],
})
esbuild app.js --bundle --platform=node --external:sharp
För serverless-esbuild, se till att plattformsspecifika binärfiler installeras via serverless.yml-konfigurationen.
custom:
esbuild:
external:
- sharp
packagerOptions:
scripts:
- npm install --os=linux --cpu=x64 sharp
Electron
Se till att sharp packas upp från ASAR-arkivet med alternativet asarUnpack.
{
"build": {
"asar": true,
"asarUnpack": [
"**/node_modules/sharp/**/*",
"**/node_modules/@img/**/*"
]
}
}
Vite
Se till att sharp utesluts från paketering via build.rollupOptions-konfigurationen.
import { defineConfig } from 'vite';
Export default defineConfig({
build: {
rollupOptions: {
external: [
"sharp"
]
}
}
});
TypeScript
TypeScript-definitioner släpps som en del av det skarpa paketet som börjar med v0.32.0.
Tidigare var dessa tillgängliga via @types/sharp-paketet, som nu är utfasat.
När du använder Typescript, se till att devDependencies inkluderar @types/node-paketet.
Fonts
När du skapar textbilder eller renderar SVG-bilder som innehåller textelement, används fontconfig för att hitta relevanta typsnitt.
På Windows- och macOS-system är alla systemteckensnitt tillgängliga.
På macOS-system som använder Homebrew kan du behöva ställa in miljövariabeln PANGOCAIRO_BACKEND till värdet för fontconfig för att säkerställa att den används för teckensnittsupptäckt istället för kärntext.
På Linux-system är teckensnitt som inkluderar den relevanta fontconfig-konfigurationen när de installeras via pakethanteraren tillgängliga för användning.
Om fontconfig-konfigurationen inte hittas kommer följande fel att uppstå:
Fontconfig error: Cannot load default config file
I serverlösa miljöer där du inte kan kontrollera teckensnittspaketen, använd miljövariabeln FONTCONFIG_PATH för att peka på en anpassad plats.
Inbäddade SVG-teckensnitt stöds inte.
Kända konflikter
Canvas and Windows
Om du använder canvas och skarpa moduler i samma Windows-process kan följande fel uppstå:
The specified procedure could not be found.