安装

qimoe 发布于 1 个月前

安装

npm install sharp
yarn add sharp

先决条件

  • Node.js v10.16.0 +

预建的二进制文件

提供了已编译好的Sharp和libvips二进制文件,可在最常见的平台上与Node.js v10.16.0 +一起使用:

  • macOS x64(> = 10.13)

  • Linux x64(glibc> = 2.17,musl> = 1.1.24)

  • Linux ARM64(glibc> = 2.29)

  • Windows

包含libvips及其最常用依赖项的〜7MB 原始代码在npm install 期间会通过HTTPS下载并存储在node_modules/sharp/vendor 中。

这提供了对JPEG,PNG,WebP,TIFF,GIF(输入)和SVG(输入)图像格式的支持。

以下平台已预先构建了libvips,但不够完善:

  • Linux ARMv6

  • Linux ARMv7(glibc> = 2.28)

以下平台需要从源代码编译libvips和sharp:

  • Linux x86

  • Linux x64(glibc <= 2.16,包括RHEL / CentOS 6)

  • Linux ARM64(glibc <= 2.28,Musl)

  • Linux PowerPC

  • FreeBSD

  • OpenBSD的

常见问题

用于的Node.js的体系结构和平台必须与运行npm install 时使用的Node.js的体系结构和平台相同。

当以rootsudo用户身份安装时,必须使用该选项npm install --unsafe-perm

npm 配置为忽略安装脚本时,必须使用该标志npm install --ignore-scripts=false

检查运行的输出以npm install --verbose sharp获取有用的错误消息。

自定义libvips

要使用定制的,全局安装的libvips版本而不是提供的二进制文件,请确保config.libvips它至少是package.json文件中列出的版本,并且可以使用pkg-config --modversion vips-cpp进行定位。

有关从源代码编译libvips的帮助,请参阅 https://libvips.github.io/libvips/install.html#building-libvips-from-a-source-tarball 

Windows不支持使用全局安装的libvips。

从源代码构建

该模块npm install将在以下情况下从源代码编译:

  • 检测到全局安装的libvips(将环境变量设置为跳过此操作SHARPIGNOREGLOBAL_LIBVIPS),

  • 当前平台和Node.js版本不存在预构建的二进制文件,或者

  • 使用该npm install --build-from-source标志时。

从源代码构建需要:

定制的预建二进制文件

这是大多数人不需要的高级方法。

要从自定义URL安装预构建的Sharp二进制文件,请设置npm configsharpbinaryhost选项或npmconfigsharpbinaryhost环境变量。

要从自定义URL安装预构建的libvips二进制文件,请设置npm configsharplibvipsbinary_host选项或npmconfigsharplibvipsbinary_host环境变量。

版本子路径和文件名将附加到这些文件。

例如,如果sharplibvipsbinary_host设置为https://hostname/path ,并且libvips版本为1.2.3则结果URL将为 https://hostname/path/v1.2.3/libvips-1.2.3-platform-arch.tar.br

进一步的示例,请参见下面的中文镜像。

中国镜像

阿里巴巴在中国提供了一个镜像站点,其中包含sharpjs和libvips的二进制文件。

要使用此功能,请设置以下配置:

npm config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp"
npm config set sharp_libvips_binary_host "https://npm.taobao.org/mirrors/sharp-libvips"
npm install sharp

或设置以下环境变量:

npm_config_sharp_binary_host="https://npm.taobao.org/mirrors/sharp" \
  npm_config_sharp_libvips_binary_host="https://npm.taobao.org/mirrors/sharp-libvips" \
  npm install sharp

FreeBSD

npm install前必须安装vips 。

pkg install -y pkgconf vips
cd /usr/ports/graphics/vips/ && make install clean

Heroku

添加 jemalloc buildpack  以减少内存碎片的影响。

使用软件包管理器yarn时,将NODE_MODULES_CACHE 设置 为false

AWS Lambda

将Lambda运行时设置为nodejs12.x

部署软件包 中的 node_modules目录中的 二进制文件必须适用于Linux x64平台。

在Linux x64以外的计算机(例如macOS和Windows)上,运行以下命令:

rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux sharp

或者,可以使用与Lambda运行时紧密匹配的Docker容器:

rm -rf node_modules/sharp
docker run -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm install sharp

为了获得最佳性能,请选择最大的可用内存。1536 MB的函数提供的CPU时间比128 MB的功能快12倍。

Electron

Electron提供了与Node.js不兼容的V8 JavaScript引擎版本。为确保使用正确的二进制文件,请运行以下命令:

npm install
npx electron-rebuild

可以在https://electronjs.org/docs/tutorial/using-native-node-modules 上找到更多帮助。 

工作线程

主线程必须require('sharp') 在创建工作线程之前调用,以确保共享库在所有线程完成之前一直保持加载在内存中。