Node.js

出自 ArchWiki
(重定向自 Npm

本条目或章节的事实准确性存在争议。

原因: 以 root 身份运行外部包管理器(在本例中为 npm 导致与 pacman 冲突(在 Talk:Node.js 中讨论)

Node.js 是一个 JavaScript 运行时环境,结合了有用的 Node.js 使用 Google V8 引擎web 浏览器 之外执行代码。由于其事件驱动、非阻塞 I/O 模型,它适用于实时 Web 应用程序。

安装

安装 nodejs 软件包。也有 长期支持 (LTS) 版本

Node 版本管理器

通常需要或希望使用不同版本的 Node.js。 Node.js 用户首选的方法是使用 Node 版本管理器 (nvmAUR),它允许廉价且轻松的替代安装。 您可以通过将其添加到您的 命令行 shell#配置文件 中来设置 nvm

. /usr/share/nvm/init-nvm.sh

用法在项目的 GitHub 上有详细记录,但非常简单,如下所示

$ nvm install 8.0
Downloading and installing node v8.0.0...
[..]

$ nvm use 8.0
Now using node v8.0.0 (npm v5.0.0)
提示: 如果您决定使用 nvmAUR,以前建议使用 AUR 中的 nodejs-fake 软件包,但现在已被删除。 建议的方法是使用 --assume-installed nodejs=<version>,根据手册 pacman(8) § TRANSACTION OPTIONS (APPLY TO -S, -R AND -U)

如果您想在目录中有 .nvmrc 文件时每次都自动运行 nvm use,请在 shell 初始化文件 中添加 这个

Node 包管理器

npm 是 Node.js 的官方包管理器。 可以使用 npm 软件包安装

使用 npm 管理软件包

安装软件包

本条目或章节正在考虑移除。

原因: 重复和不良做法,请参阅编辑页面了解更多信息(在 Talk:Node.js 中讨论)

可以使用以下命令安装任何软件包

$ npm install packageName

此命令将软件包安装在当前目录的 node_modules 下,并将可执行文件安装在 node_modules/.bin 下。

对于系统范围的安装,可以使用全局开关 -g

# npm -g install packageName

默认情况下,此命令将软件包安装在 /usr/lib/node_modules/npm 下,并且需要 root 权限才能执行此操作。(如果使用像 umask 0077 这样的安全 umask,您将需要为软件包设置 宽松的 sudo umask 才能使用。)

允许用户级安装

要允许当前用户全局软件包安装,请设置 npm_config_prefix 环境变量。 npm 和 yarn 都会使用它。

~/.profile
PATH="$HOME/.local/bin:$PATH"
export npm_config_prefix="$HOME/.local"

重新登录或 source 以更新更改。

注意: 一旦您全局安装软件包,binlib 目录将自动在您的前缀目录中创建。

您还可以为 npm install 指定 --prefix 参数。 但是, 建议这样做,因为您每次安装全局软件包时都需要添加它。

$ npm -g install packageName --prefix ~/.local

另一种选择是在 $HOME/.npmrc 中设置 prefix 字段。 这实现了与在 .profile 中使用 npm_config_prefix="$HOME/.local" 相同的效果

$ npm set prefix="$HOME/.local"
注意: 最后一种方法仅特定于 npm

更新软件包

更新软件包非常简单,如下所示

$ npm update packageName

对于全局安装的软件包 (-g) 的情况

# npm update -g packageName
注意: 请记住,除非 prefix 设置为用户可写目录,否则全局安装的软件包需要管理员权限
更新所有软件包

但是,有时您可能只想更新所有软件包,无论是本地还是全局。 省略 packageName npm 将尝试更新所有软件包

$ npm update

或添加 -g 标志以更新全局安装的软件包

# npm update -g

移除软件包

要删除使用 -g 开关安装的软件包,只需使用

# npm -g uninstall packageName
注意: 请记住,全局安装的软件包需要管理员权限

要删除本地软件包,请删除开关并运行

$ npm uninstall packageName

列出软件包

要显示全局安装的软件包的树状视图,请使用

$ npm -g list

此树通常非常深。 要仅显示顶层软件包,请使用

$ npm list --depth=0

要显示可能需要更新的过时软件包

$ npm outdated

使用 pacman 管理软件包

一些 Node.js 软件包可以在 Arch 用户仓库 (AUR) 中找到,名称为 nodejs-package_name

有关为 AUR 打包 Node.js 软件包的最佳实践,请参阅 Node.js 软件包指南

故障排除

npm help 不显示文档

使用 npm help topic 可能不会显示 topic 的文档。 请改用 man npm-topic。 例如

$ npm help install
Top hits for "install"
...
$ man npm-install
... shows the documentation for the npm install subcommand

这是 Arch 的 npm 软件包的 一个错误

node-gyp 错误

如果出现类似 gyp WARN EACCES user "root" does not have permission to access the ... dir 的错误,--unsafe-perm 选项可能会有所帮助

# npm install --unsafe-perm -g node-inspector

找不到模块 ... 错误

自 npm 5.x.x 以来,package-lock.json 文件与 package.json 文件一起生成。 当两个文件引用不同的软件包版本时,可能会出现冲突。 解决此问题的一种临时方法是

$ rm package-lock.json
$ npm install

但是,在 npm 5.1.0 或更高版本之后进行了修复。 有关更多信息,请参阅: 缺少依赖项

参见