Λειτουργεί με τον διαχειριστή πακέτων JavaScript της επιλογής σας.
⚠️ Βεβαιωθείτε ότι ο διαχειριστής πακέτων έχει ρυθμιστεί για εγκατάσταση προαιρετικών εξαρτήσεων
Εάν ένα αρχείο κλειδώματος διαχείρισης πακέτων πρέπει να υποστηρίζει πολλές πλατφόρμες, ανατρέξτε στην ενότητα μεταξύ πλατφορμών για να αποφασίσετε ποιος διαχειριστής πακέτων είναι κατάλληλος.
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 ...
Προαπαιτούμενα
- Ένας χρόνος εκτέλεσης συμβατός με Node-API v9, όπως Node.js ^18.17.0 ή >=20.3.0.
Προκατασκευασμένα δυαδικά
Μεταγλωττισμένα δυαδικά αρχεία αιχμηρά και libvips είναι διαθέσιμα για τις πιο κοινές πλατφόρμες:
- 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 με SSE4.2)
- Windows x64
- Windows x86
Αυτό παρέχει υποστήριξη για μορφές εικόνας JPEG, PNG, WebP, AVIF (περιορισμένο σε βάθος 8 bit), TIFF, GIF και SVG (εισόδου).
Cross-platform
Κατά τη στιγμή της εγκατάστασης, ο διαχειριστής πακέτων θα επιλέξει αυτόματα προκατασκευασμένα δυαδικά αρχεία για την τρέχουσα πλατφόρμα λειτουργικού συστήματος και την αρχιτεκτονική CPU, εάν είναι διαθέσιμα.
Ορισμένοι διαχειριστές πακέτων υποστηρίζουν πολλαπλές πλατφόρμες και αρχιτεκτονικές στο ίδιο δέντρο εγκατάστασης ή/και χρησιμοποιώντας το ίδιο αρχείο κλειδώματος.
Npm v10+
⚠️ Το αρχείο npm package-lock.json μπορεί να προκαλέσει προβλήματα εγκατάστασης λόγω σφάλματος npm#4828
Περιορισμένη υποστήριξη μέσω σημαιών --os, --cpu και --libc.
Για να υποστηρίξετε macOS με επεξεργαστές Intel x64 και ARM64:
npm install --cpu=x64 --os=darwin sharp
Npm install --cpu=arm64 --os=darwin sharp
Όταν ο διασταυρούμενος στόχος είναι το Linux, πρέπει να καθοριστεί η τυπική βιβλιοθήκη C.
Για να υποστηρίξετε glibc (π.χ. Debian) και musl (π.χ. Alpine) Linux με επεξεργαστές Intel x64:
npm install --cpu=x64 --os=linux --libc=glibc sharp
Npm install --cpu=x64 --os=linux --libc=musl sharp
Yarn v3+
Χρησιμοποιήστε τη διαμόρφωση supportedArchitectures.
Pnpm v8+
Χρησιμοποιήστε τη διαμόρφωση supportedArchitectures.
Προσαρμοσμένα libvips
Για να χρησιμοποιήσετε μια προσαρμοσμένη, καθολικά εγκατεστημένη έκδοση του libvips αντί για το παρεχόμενο δυαδικό, βεβαιωθείτε ότι είναι τουλάχιστον η έκδοση που αναφέρεται στο engines.libvips στο αρχείο package.json και ότι μπορεί να βρεθεί χρησιμοποιώντας pkg-config --modversion vips- cpp.
Για βοήθεια σχετικά με τη σύνταξη libvips και τις εξαρτήσεις του, ανατρέξτε στη δημιουργία libvips από την πηγή .
Η χρήση καθολικά εγκατεστημένου libvips δεν υποστηρίζεται στα Windows και στο macOS κατά την εκτέλεση του Node.js στο Rosetta.
Κατασκευή από την πηγή
Αυτή η ενότητα θα μεταγλωττιστεί από την πηγή όταν την εγκαταστήσει η npm εάν:
- Εντοπίζεται ένα libvips που είναι εγκατεστημένο παγκοσμίως ή
- Όταν χρησιμοποιείται η σημαία npm install --build-from-source.
Η λογική για τον εντοπισμό ενός καθολικά εγκατεστημένου libvips μπορεί να παραλειφθεί ορίζοντας τις μεταβλητές περιβάλλοντος SHARP_IGNORE_GLOBAL_LIBVIPS (μην προσπαθήσετε ποτέ να το χρησιμοποιήσετε) ή SHARP_FORCE_GLOBAL_LIBVIPS (να προσπαθείτε πάντα να το χρησιμοποιείτε ακόμα και αν λείπει ή είναι παλιό).
Η κατασκευή από την πηγή απαιτεί:
- C++11 μεταγλωττιστής
- Node-addon-apiVersion 7+
- Node-gypVersion 9+ και οι εξαρτήσεις του
Αυτές οι εξαρτήσεις ελέγχονται κατά την εγκατάσταση. Εάν δεν βρεθεί το node-addon-api ή το node-gyp, δοκιμάστε να τα προσθέσετε μέσω:
npm install --save node-addon-api node-gyp
Για πολλαπλή μεταγλώττιση, χρησιμοποιήστε τις σημαίες --platform, --arch και --libc npm (ή τις μεταβλητές περιβάλλοντος npm_config_platform, npm_config_arch και npm_config_libc) για να διαμορφώσετε το περιβάλλον προορισμού.
WebAssembly
Πειραματική υποστήριξη για χρόνους εκτέλεσης Wasm πολλαπλών νημάτων μέσω Workers.
Δεν υποστηρίζεται για χρήση σε προγράμματα περιήγησης ιστού.
Η απόδοση εγγενούς κειμένου δεν υποστηρίζεται.
npm install --cpu=wasm32 sharp
FreeBSD
Το πακέτο vips πρέπει να εγκατασταθεί πριν από την εγκατάσταση npm.
pkg install -y pkgconf vips
cd /usr/ports/graphics/vips/ && make install clean
Εκχωρητής μνήμης Linux
Ο προεπιλεγμένος κατανεμητής μνήμης στα περισσότερα συστήματα Linux που βασίζονται σε glibc (π.χ. Debian, Red Hat) δεν είναι κατάλληλος για μακροχρόνιες διεργασίες πολλαπλών νημάτων που περιλαμβάνουν πολλές μικρές εκχωρήσεις μνήμης.
Για αυτόν τον λόγο, από προεπιλογή, η αιχμηρή θα περιορίσει τη χρήση της ταυτόχρονης λειτουργίας που βασίζεται σε νήματα όταν ανιχνεύεται ο εκχωρητής glibc κατά το χρόνο εκτέλεσης.
Για να αποφευχθεί ο κατακερματισμός και να βελτιωθεί η απόδοση σε αυτά τα συστήματα, συνιστάται η χρήση εναλλακτικού εκχωρητή μνήμης όπως το jemalloc.
Οι χρήστες συστημάτων Linux που βασίζονται σε musl (όπως το Alpine) και συστημάτων που δεν είναι Linux δεν επηρεάζονται.
AWS Lambda
Ο κατάλογος node_modules του πακέτου ανάπτυξης πρέπει να περιλαμβάνει δυαδικά αρχεία είτε για τις πλατφόρμες linux-x64 ή linux-arm64 ανάλογα με την επιλεγμένη αρχιτεκτονική.
Όταν δημιουργείτε το πακέτο ανάπτυξης σε ένα μηχάνημα που διαφέρει από την αρχιτεκτονική προορισμού, ανατρέξτε στην ενότητα μεταξύ πλατφορμών για να αποφασίσετε ποιος διαχειριστής πακέτων είναι κατάλληλος και πώς να το ρυθμίσετε.
Ορισμένοι διαχειριστές πακέτων χρησιμοποιούν συμβολικούς συνδέσμους, αλλά το AWS Lambda δεν τους υποστηρίζει στα πακέτα ανάπτυξης.
Για να έχετε την καλύτερη απόδοση επιλέξτε τη μεγαλύτερη διαθέσιμη μνήμη. Μια συνάρτηση 1536 MB παρέχει ~ 12 φορές περισσότερο χρόνο CPU από μια λειτουργία 128 MB.
Κατά την ενσωμάτωση με το AWS API Gateway, βεβαιωθείτε ότι έχει διαμορφωθεί με τους σχετικούς τύπους δυαδικών μέσων.
Bundler
Webpack
Βεβαιωθείτε ότι η αιχμηρή αποκλείεται από τη συσκευασία μέσω της διαμόρφωσης εξωτερικών.
externals: {
'sharp': 'commonjs sharp'
}
Esbuild
Βεβαιωθείτε ότι η αιχμηρή αποκλείεται από τη συσκευασία μέσω της εξωτερικής διαμόρφωσης.
buildSync({
entryPoints: ['app.js'],
bundle: true,
platform: 'node',
external: ['sharp'],
})
esbuild app.js --bundle --platform=node --external:sharp
Για το esbuild χωρίς διακομιστή, βεβαιωθείτε ότι έχουν εγκατασταθεί δυαδικά αρχεία για συγκεκριμένη πλατφόρμα μέσω της διαμόρφωσης serverless.yml.
custom:
esbuild:
external:
- sharp
packagerOptions:
scripts:
- npm install --os=linux --cpu=x64 sharp
Electron
Βεβαιωθείτε ότι το sharp έχει αποσυσκευαστεί από το αρχείο ASAR χρησιμοποιώντας την επιλογή asarUnpack.
{
"build": {
"asar": true,
"asarUnpack": [
"**/node_modules/sharp/**/*",
"**/node_modules/@img/**/*"
]
}
}
Vite
Βεβαιωθείτε ότι το sharp εξαιρείται από τη ομαδοποίηση μέσω της διαμόρφωσης build.rollupOptions.
import { defineConfig } from 'vite';
Export default defineConfig({
build: {
rollupOptions: {
external: [
"sharp"
]
}
}
});
TypeScript
Οι ορισμοί του TypeScript κυκλοφορούν ως μέρος του πακέτου ευκρίνειας που ξεκινά με την έκδοση 0.32.0.
Παλαιότερα ήταν διαθέσιμα μέσω του πακέτου @types/sharp, το οποίο πλέον έχει καταργηθεί.
Όταν χρησιμοποιείτε το Typescript, βεβαιωθείτε ότι οι Dependencies περιλαμβάνουν το πακέτο @types/node.
Fonts
Κατά τη δημιουργία εικόνων κειμένου ή την απόδοση εικόνων SVG που περιέχουν στοιχεία κειμένου, το fontconfig χρησιμοποιείται για την εύρεση σχετικών γραμματοσειρών.
Σε συστήματα Windows και macOS, όλες οι γραμματοσειρές συστήματος είναι διαθέσιμες.
Σε συστήματα macOS που χρησιμοποιούν το Homebrew, ίσως χρειαστεί να ορίσετε τη μεταβλητή περιβάλλοντος PANGOCAIRO_BACKEND στην τιμή του fontconfig για να βεβαιωθείτε ότι χρησιμοποιείται για τον εντοπισμό γραμματοσειρών αντί για το Core Text.
Σε συστήματα Linux, είναι διαθέσιμες για χρήση γραμματοσειρές που περιλαμβάνουν τη σχετική διαμόρφωση fontconfig όταν εγκαθίστανται μέσω του διαχειριστή πακέτων.
Εάν δεν βρεθεί η διαμόρφωση fontconfig, θα προκύψει το ακόλουθο σφάλμα:
Fontconfig error: Cannot load default config file
Σε περιβάλλοντα χωρίς διακομιστές όπου δεν μπορείτε να ελέγξετε τα πακέτα γραμματοσειρών, χρησιμοποιήστε τη μεταβλητή περιβάλλοντος FONTCONFIG_PATH για να υποδείξετε μια προσαρμοσμένη τοποθεσία.
Οι ενσωματωμένες γραμματοσειρές SVG δεν υποστηρίζονται.
Γνωστές συγκρούσεις
Canvas and Windows
Εάν χρησιμοποιείτε καμβά και ευκρινείς μονάδες στην ίδια διαδικασία των Windows, ενδέχεται να προκύψουν τα ακόλουθα σφάλματα:
The specified procedure could not be found.