Skip to content

npm

> 太棒了 npm 资源和提示

npm 是 JavaScript 编程语言的包管理器,捆绑在 Node.js 运行.

请阅读 contribution guidelines 在贡献之前.

Articles

Tools

Web

Browser extensions

  • Octo-Linker - Chrome 扩展,可轻松浏览 GitHub 上的 npm 包.
  • npm-hub - Chrome 扩展,用于探索 GitHub 存储库上的 npm 依赖项.
  • github-npm-stats - 在 GitHub 上查看 npm 下载统计信息.
  • npm-search-update - Chrome 扩展,可快速搜索依赖项并监控 npm 注册表中的更改.

CLI

Packages

Publishing

  • np - 更好的 npm publish.
  • publish-please - 安全优雅地发布包.
  • npm-release - 使发布到 npm 变得如此简单,小猫可能会做到™.
  • pkgfiles - 列出将在包中发布的所有文件.
  • release-it - 自动发布 Git 存储库和/或 npm 包. 变更日志生成、GitHub/GitLab 发布等.
  • semantic-release - 全自动包发布.

Registry

  • npm-name - 检查包名称是否在 npm 上可用.
  • package-json - 从 npm 注册表获取包的 package.json.
  • latest-version - 获取最新版本的 npm 包.
  • npm-keyword - 获取带有特定关键字的 npm 包列表.
  • npm-user - 获取 npm 用户的用户信息.
  • npm-email - 获取 npm 用户的电子邮件.
  • npm-user-packages - 由 npm 用户获取包.
  • dpn - 获取用户 npm 包的依赖项.
  • npm-stats - 从 npm 注册表获取数据.
  • npm-cli-login - 登录 npm.
  • nrm - 注册管理器.
  • npm-register - 易于设置和维护 npm 注册表和代理.
  • verdaccio - 轻量级私有 npm 代理注册表.
  • cloudsmith - 一个完全托管的包管理 SaaS,支持公共和私人 npm 注册表(以及许多其他注册表).

Other

  • npm-home - 打开包的 npm 页面.
  • gh-home - 打开包的 GitHub 页面.
  • david - 检查您的软件包依赖项是否已过期.
  • npm-check - 检查过时的、不正确的和未使用的依赖项,以及交互式更新.
  • npm-upgrade - 以交互方式更新过时的 npm 依赖项.
  • npm-shrinkwrap - 一致的收缩包装工具.
  • npm-windows-upgrade - 在 Windows 上升级 npm.
  • generator-nm - 搭建一个 npm 包.
  • pkg-up - 找到最近的 package.json 文件.
  • read-pkg-up - 阅读最近的 package.json 文件.
  • normalize-package-data - 标准化包元数据.
  • pkg-conf - 从最近的 package.json 获取命名空间配置.
  • npm-run-path - 按名称在终端中运行本地安装的二进制文件,就像全局二进制文件一样.
  • local-npm - 使用 npm offline.
  • npe - 用于检查和编辑 package.json 中的属性的 CLI.
  • engine-deps - 轻松管理 Node.js 版本特定的依赖项.
  • enpeem-search - 通过抓取 npm 网络搜索来搜索包.
  • npm-issues - 一次搜索所有包的已知问题.
  • john - 使 npm3 的平面依赖项更易于查找和排序.
  • ntl - 用于列出和运行 npm 任务的交互式 CLI 菜单.
  • decheck - 在命令行中探索 npm 包的依赖关系.
  • shrinkpack - 锁定您的依赖项并离线安装.
  • redrun - 扩展 package.json 中的脚本以提高执行速度.
  • package-size - 获取 npm 包的包大小.
  • synp - 将 yarn.lock 转换为 package-lock.json,反之亦然.
  • npm-run-all - 用于并行或串行运行多个 npm 脚本的 CLI 工具.
  • onchange - 监视文件和文件夹并在发生变化时运行命令.
  • cli-error-notifier - 当 npm 脚本失败时发送本机桌面通知.
  • luna - 用于管理 npm 依赖项的应用程序.
  • emma-cli - 交互式 CLI 包搜索实用程序.
  • lockfile-lint - 用于改进安全性和信任策略的 Lint 锁文件,以减轻恶意包注入和不安全的锁文件资源.

Clients

  • yarn - 快速、可靠和安全的依赖管理.
  • npm - 官方客户端.
  • pnpm - 快速、节省磁盘空间的包管理器.

Tips

Update to the latest npm version

$ npm 安装 --global npm

Windows users, read more.

Command aliases

-npm inpm install - npm i -Dnpm install --save-dev - npm tnpm test - npm itnpm install && npm test - npm rnpm uninstall - npm unnpm uninstall - npm upnpm update

Shell aliases

加速您的常见 npm 任务.

在你的 .zshrc/.bashrc 中:

别名 ni='npm 安装'
别名 nid='npm install --save-dev'
别名 nig='npm install --global'
别名 nt='npm 测试'
别名 nit='npm install && npm test'
别名 nk='npm 链接'
别名 nr='npm run'
别名 ns='npm 开始'
别名 nf='npm 缓存清理 && rm -rf node_modules && npm install'
别名 nlg='npm list --global --depth=0'

Don't add to package.json when installing

默认情况下,npm 将您安装的包添加到 package.json 中的“dependencies”字段(自 v5 起). 您可以通过指定 --no-save 标志来防止这种情况. 您可以使用 --save-dev/-D 将包添加到 devDependencies

$ npm install --save-dev ava

Run scripts

您可以轻松地 run scripts 通过将它们添加到 package.json 中的“脚本”字段并使用 npm run 运行它们来使用 npm `. 运行“npm run”以查看可用的脚本. 本地安装包的二进制文件在 PATH,因此您可以按名称运行它们.

{
    "name": "awesome-package",
    “脚本”:{
        “猫”:“猫的名字”
    },
    “依赖”:{
        “猫名”:“^1.0.0
    }
}
$ npm 运行猫
Max

所有 package.json 属性都是 exposed 作为环境变量:

{
    "name": "awesome-package",
    “脚本”:{
        “名称”:“回声 $npm_package_name”
    }
}
$ npm 运行名称
awesome-package

Passing options to commands

您可以通过添加 -- --flag 将选项传递给您在 npm 脚本中使用的命令,如下例所示. -- marks the end of options parsing,因此 npm run 将忽略它并将其传递给命令.

{
    "name": "awesome-package",
    “脚本”:{
        “xo”:“xo”,
        "xo:fix": "npm run xo -- --fix",
    }
}

添加 -- --fix 选项就像执行 xo --fix.

Silent option

npm run 有一个 --silent 选项,在组合 npm 脚本时特别有用.

想象一下,您有一个像下面这样对 JavaScript 文件进行 linting 的设置:

{
    "name": "awesome-package",
    “脚本”:{
        “xo”:“xo”,
        "xo:fix": "npm run xo --silent -- --fix",
    }
}

使用 --silent 选项减少终端中的输出. 看 this comparison.

Lifecycle scripts

npm 自带预定义 lifecyle scripts 如果它们在您的 package.json 中定义,它们将在特定条件下执行.

{
    "name": "awesome-package",
    “脚本”:{
        “prepublishOnly”:“nsp 检查”
    },
    “devDependencies”:{
        nsp”:“^3.0.0
    }
}

这将在您的 npm 包通过“npm publish”发布到注册表之前自动执行,以检查您的依赖项中的已知漏洞.

注意:prepublishOnly 从 npm v4.0.0 开始可用. 看 npm docs.

npm start and npm test

npm startnpm test 也是生命周期脚本,但不会自动执行.

{
    "name": "awesome-package",
    “脚本”:{
        “开始”:“节点服务器.js”,
        “测试”:“艾娃”
    },
    “devDependencies”:{
        “ava”:“^1.0.0
    }
}

因此它们可以简单地执行:

$ npm 测试
$ npm 开始

pre and post scripts

这些是特殊的生命周期脚本,可用于按顺序自动运行脚本.

{
    "name": "awesome-package",
    “脚本”:{
        “预测试”:“eslint.”,
        “测试”:“艾娃”
    },
    “devDependencies”:{
        "eslint": "^4.19.0",
        “ava”:“^1.0.0
    }
}
$ npm 测试

这将在运行测试之前检查您的文件. 如果 linting 失败,测试将不会运行. 或者更通俗地说:如果按顺序运行的脚本之一以非 0 的退出代码退出,则不会执行以下脚本.

注意:prepost 脚本也可以用于您的自定义 npm 脚本. 所以如果定义了 npm run foo 也会运行 prefoopostfoo.

Run script with npx

npm comes bundled with npx (Since v5.2.0) — 一个执行包二进制文件的工具. 每个命令都从本地 node_modules/.bin 目录或中央缓存执行,安装所需的任何包以<command> 运行.

{
    &quot;name&quot;: &quot;awesome-package&quot;,
    “依赖”:{
        “猫名”:“^1.0.0
    }
}

如果二进制文件已经安装,它将从 node_modules/.bin 执行.

$ npx 猫名
Max

但是如果二进制文件丢失,它将首先安装.

$ npx 狗名
npx:在 3.136 秒内安装了 46 个
Bentley

Run commands with different Node.js versions

使用 npx(与 npm v5.2.0 或更新版本捆绑在一起)和 node-bin 包,您可以轻松地在不同的 Node.js 版本中尝试代码,而无需使用像这样的版本管理器 nvm, nave, 或者 n.

$ npx --package=node-bin@6.11.0 -- 节点 --version
v6.11.0

有时将包的本地版本作为依赖项可能很有用. 您可以使用“npm link”将一个本地包链接到另一个本地包. 在您要使用的包中运行“npm link”. 这将创建一个全局引用. 然后进入你的原始包并运行npm link<package-name> 链接到另一个包中.

$ CD 彩虹
$ npm 链接
$ cd ../unicorn
$ npm 链接彩虹

您现在可以将 rainbow 用作 unicorn 包中的依赖项.

Install a package from GitHub

npm 支持使用简写直接从 GitHub 存储库安装包:

$ npm 安装 sindresorhus/粉笔

让我们定位一个特定的提交,因为主分支是一个移动的目标:

$ npm install 'sindresorhus/chalk#51b8f32'

指定提交 SHA、分支、标记或什么都不指定.

您还可以使用 semver 安装 Git 依赖项:(需要 npm v5 或更新版本)

$ npm install 'sindresorhus/chalk#semver:^2.0.0'

Install a specific version of a package

$ npm 安装 chalk@1.0.0

List top-level installed packages and their version

$ npm ls --depth=0

Command help

获取命令的帮助文档:

$ npm 帮助<command>

Example:

$ npm 帮助安装

Standalone version of a package

快速获取独立版本的包,该版本已浏览器化并可在浏览器中使用.

https://wzrd.in/standalone/<package-name>[@<version>]

Examples:

非常适合原型制作,但下载文件或自己使用 Browserify 进行生产.

FAQ

Community

Documentation

Support