如何使用 npm 管理 NodeJS 包 | Linux 中国

2018 年 5 月 7 日 Linux中国 译者:MjSeven
在本指南中,我将解释使用 npm 基础知识,例如安装包(本地和全局)、安装特定版本的包、更新、删除和管理 NodeJS 包等等。
-- Sk

致谢
编译自 | https://www.ostechnix.com/manage-nodejs-packages-using-npm/ 
 作者 | Sk
 译者 | MjSeven 🌟 🌟 🌟 🌟 共计翻译:35 篇 贡献时间:96 天

前一段时间,我们发布了一个使用 pip 管理 Python 包[1]的指南。今天,我们将讨论如何使用 npm 管理 NodeJS 包。npm 是最大的软件注册中心,包含 600,000 多个包。每天,世界各地的开发人员通过 npm 共享和下载软件包。在本指南中,我将解释使用 npm 基础知识,例如安装包(本地和全局)、安装特定版本的包、更新、删除和管理 NodeJS 包等等。

安装 npm

用于 npm 是用 NodeJS 编写的,我们需要安装 NodeJS 才能使用 npm。要在不同的 Linux 发行版上安装 NodeJS,请参考下面的链接。

◈  在 Linux 上安装 NodeJS [2]

检查 node 安装的位置:

   
     
     
     
  1. $ which node

  2. /home/sk/.nvm/versions/node/v9.4.0/bin/node

检查它的版本:

   
     
     
     
  1. $ node -v

  2. v9.4.0

进入 Node 交互式解释器:

   
     
     
     
  1. $ node

  2. > .help

  3. .break Sometimes you get stuck, this gets you out

  4. .clear Alias for .break

  5. .editor Enter editor mode

  6. .exit Exit the repl

  7. .help Print this help message

  8. .load Load JS from a file into the REPL session

  9. .save Save all evaluated commands in this REPL session to a file

  10. > .exit

检查 npm 安装的位置:

   
     
     
     
  1. $ which npm

  2. /home/sk/.nvm/versions/node/v9.4.0/bin/npm

还有版本:

   
     
     
     
  1. $ npm -v

  2. 5.6.0

棒极了!Node 和 npm 已安装好!正如你可能已经注意到,我已经在我的 $HOME 目录中安装了 NodeJS 和 NPM,这样是为了避免在全局模块时出现权限问题。这是 NodeJS 团队推荐的方法。

那么,让我们继续看看如何使用 npm 管理 NodeJS 模块(或包)。

安装 NodeJS 模块

NodeJS 模块可以安装在本地或全局(系统范围)。现在我将演示如何在本地安装包(LCTT 译注:即将包安装到一个 NodeJS 项目当中,所以下面会先创建一个空项目做演示)。

在本地安装包

为了在本地管理包,我们通常使用 package.json 文件来管理。

首先,让我们创建我们的项目目录。

   
     
     
     
  1. $ mkdir demo

  2. $ cd demo

在项目目录中创建一个 package.json 文件。为此,运行:

   
     
     
     
  1. $ npm init

输入你的包的详细信息,例如名称、版本、作者、GitHub 页面等等,或者按下回车键接受默认值并键入 yes 确认。

   
     
     
     
  1. This utility will walk you through creating a package.json file.

  2. It only covers the most common items, and tries to guess sensible defaults.

  3. See `npm help json` for definitive documentation on these fields

  4. and exactly what they do.

  5. Use `npm install <pkg>` afterwards to install a package and

  6. save it as a dependency in the package.json file.

  7. Press ^C at any time to quit.

  8. package name: (demo)

  9. version: (1.0.0)

  10. description: demo nodejs app

  11. entry point: (index.js)

  12. test command:

  13. git repository:

  14. keywords:

  15. author:

  16. license: (ISC)

  17. About to write to /home/sk/demo/package.json:

  18. {

  19. "name": "demo",

  20. "version": "1.0.0",

  21. "description": "demo nodejs app",

  22. "main": "index.js",

  23. "scripts": {

  24. "test": "echo \"Error: no test specified\" && exit 1"

  25. },

  26. "author": "",

  27. "license": "ISC"

  28. }

  29. Is this ok? (yes) yes

上面的命令初始化你的项目并创建了 package.json 文件。

你也可以使用命令以非交互式方式执行此操作:

   
     
     
     
  1. npm init --y

现在让我们安装名为 commander[3] 的包。

   
     
     
     
  1. $ npm install commander

示例输出:

   
     
     
     
  1. npm notice created a lockfile as package-lock.json. You should commit this file.

  2. npm WARN demo@1.0.0 No repository field.

  3. + commander@2.13.0

  4. added 1 package in 2.519s

这将在项目的根目录中创建一个名为 node_modules 的目录(如果它不存在的话),并在其中下载包。

让我们检查 pachage.json 文件。

   
     
     
     
  1. $ cat package.json

  2. {

  3. "name": "demo",

  4. "version": "1.0.0",

  5. "description": "demo nodejs app",

  6. "main": "index.js",

  7. "scripts": {

  8. "test": "echo \"Error: no test specified\" && exit 1"

  9. },

  10. "author": "",

  11. "license": "ISC",

  12. "dependencies": {

  13. "commander": "^2.13.0"

  14. }

  15. }

你会看到添加了依赖文件,版本号前面的插入符号 ( ^ ) 表示在安装时,npm 将取出它可以找到的最高版本的包。

   
     
     
     
  1. $ ls node_modules/

  2. commander

package.json 文件的优点是,如果你的项目目录中有 package.json 文件,只需键入 npm install,那么 npm 将查看文件中列出的依赖关系并下载它们。你甚至可以与其他开发人员共享它或将其推送到你的 GitHub 仓库。因此,当他们键入 npm install 时,他们将获得你拥有的所有相同的包。

你也可能会注意到另一个名为 package-lock.json 的文件,该文件确保在项目安装的所有系统上都保持相同的依赖关系。

要在你的程序中使用已安装的包,使用实际代码在项目目录中创建一个 index.js(或者其他任何名称)文件,然后使用以下命令运行它:

   
     
     
     
  1. $ node index.js

在全局安装包

如果你想使用一个包作为命令行工具,那么最好在全局安装它。这样,无论你的当前目录是哪个目录,它都能正常工作。

   
     
     
     
  1. $ npm install async -g

  2. + async@2.6.0

  3. added 2 packages in 4.695s

或者

   
     
     
     
  1. $ npm install async --global

要安装特定版本的包,我们可以:

   
     
     
     
  1. $ npm install async@2.6.0 --global

更新 NodeJS 模块

要更新本地包,转到 package.json 所在的项目目录并运行:

   
     
     
     
  1. $ npm update

然后,运行以下命令确保所有包都更新了。

   
     
     
     
  1. $ npm outdated

如果没有需要更新的,那么它返回空。

要找出哪一个全局包需要更新,运行:

   
     
     
     
  1. $ npm outdated -g --depth=0

如果没有输出,意味着所有包都已更新。

更新单个全局包,运行:

   
     
     
     
  1. $ npm update -g <package-name>

更新所有的全局包,运行:

   
     
     
     
  1. $ npm update -g

列出 NodeJS 模块

列出本地包,转到项目目录并运行:

   
     
     
     
  1. $ npm list

  2. demo@1.0.0 /home/sk/demo

  3. └── commander@2.13.0

如你所见,我在本地安装了 commander 这个包。

要列出全局包,从任何位置都可以运行以下命令:

   
     
     
     
  1. $ npm list -g

示例输出:

   
     
     
     
  1. /home/sk/.nvm/versions/node/v9.4.0/lib

  2. ├─┬ async@2.6.0

  3. └── lodash@4.17.4

  4. └─┬ npm@5.6.0

  5. ├── abbrev@1.1.1

  6. ├── ansi-regex@3.0.0

  7. ├── ansicolors@0.3.2

  8. ├── ansistyles@0.1.3

  9. ├── aproba@1.2.0

  10. ├── archy@1.0.0

  11. [...]

该命令将列出所有模块及其依赖关系。

要仅仅列出顶级模块,使用 -depth=0 选项:

   
     
     
     
  1. $ npm list -g --depth=0

  2. /home/sk/.nvm/versions/node/v9.4.0/lib

  3. ├── async@2.6.0

  4. └── npm@5.6.0

寻找 NodeJS 模块

要搜索一个模块,使用 npm search 命令:

   
     
     
     
  1. npm search <search-string>

例如:

   
     
     
     
  1. $ npm search request

该命令将显示包含搜索字符串 request 的所有模块。

移除 NodeJS 模块

要删除本地包,转到项目目录并运行以下命令,这会从 node_modules 目录中删除包:

   
     
     
     
  1. $ npm uninstall <package-name>

要从 package.json 文件中的依赖关系中删除它,使用如下所示的 save 选项:

   
     
     
     
  1. $ npm uninstall --save <package-name>

要删除已安装的全局包,运行:

   
     
     
     
  1. $ npm uninstall -g <package>

清除 npm 缓存

默认情况下,npm 在安装包时,会将其副本保存在 $HOME 目录中名为 .npm 的缓存文件夹中。所以,你可以在下次安装时不必再次下载。

查看缓存模块:

   
     
     
     
  1. $ ls ~/.npm

随着时间的推移,缓存文件夹会充斥着大量旧的包。所以不时清理缓存会好一些。

从 npm@5 开始,npm 缓存可以从 corruption 问题中自行修复,并且保证从缓存中提取的数据有效。如果你想确保一切都一致,运行:

   
     
     
     
  1. $ npm cache verify

清除整个缓存,运行:

   
     
     
     
  1. $ npm cache clean --force

查看 npm 配置

要查看 npm 配置,键入:

   
     
     
     
  1. $ npm config list

或者:

   
     
     
     
  1. $ npm config ls

示例输出:

   
     
     
     
  1. ; cli configs

  2. metrics-registry = "https://registry.npmjs.org/"

  3. scope = ""

  4. user-agent = "npm/5.6.0 node/v9.4.0 linux x64"

  5. ; node bin location = /home/sk/.nvm/versions/node/v9.4.0/bin/node

  6. ; cwd = /home/sk

  7. ; HOME = /home/sk

  8. ; "npm config ls -l" to show all defaults.

要显示当前的全局位置:

   
     
     
     
  1. $ npm config get prefix

  2. /home/sk/.nvm/versions/node/v9.4.0

好吧,这就是全部了。我们刚才介绍的只是基础知识,npm 是一个广泛话题。有关更多详细信息,参阅 NPM Getting Started[1] 指南。

希望这对你有帮助。更多好东西即将来临,敬请关注!

干杯!


via: https://www.ostechnix.com/manage-nodejs-packages-using-npm/

作者:SK[5] 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


登录查看更多
0

相关内容

JSON( Java Script Object Notation)是一种轻量级的资料交换语言,以文字为基础,且易于让人阅读。尽管 JSON 是在 JavaScript 的一個子集,但 JSON 是独立于语言的文本格式,並且采用了类似于 C 语言家族的一些习惯。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
如何用TF Serving部署TensorFlow模型
AI研习社
26+阅读 · 2019年3月27日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Arxiv
9+阅读 · 2018年3月23日
Arxiv
4+阅读 · 2017年11月4日
VIP会员
相关资讯
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
如何用TF Serving部署TensorFlow模型
AI研习社
26+阅读 · 2019年3月27日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
如何运用Python建一个聊天机器人?
七月在线实验室
17+阅读 · 2018年1月23日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Top
微信扫码咨询专知VIP会员