Skip to content
快速预览

包管理工具npm

✍️ w 🕒 2023-06-08 06:48:22(a year ago) 🔗 C.前端工程化 工程化 npm

很多语言都有这种包管理工具,Python的pip,Java的Maven一样的作用,包管理,最初的时候Node.js 是一个在德国工作的美国程序员 Ryan Dahl 写的。他写了 Node.js,但是 Node.js 缺少一个包管理器,于是他和 npm 的作者(Isaaz)一拍即合、抱团取暖,最终 Node.js 内置了 npm,当然前端的包管理工具并不局限在npm, 还有 yarn pnpm,现在的GitHub 收购npm,npm 也已经输入微软公司

npm 能做什么

  1. 允许用户从 npm 服务器下载别人编写的第三方包到本地使用。
  2. 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用。
  3. 允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用。

TIP

npm 官方仓库或其他注册的仓库中下载,npm 的背后,是基于 couchdb 的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

npm 能做到这三点都是源于npm 组成,npm 并不是在使用意义 cli 工具,他是通过

  1. 网站:npm 官方网站是 https://www.npmjs.com/,它提供了一些功能,如搜索软件包、管理依赖、发布软件包、创建组织等。

  2. 注册表: npm 的注册表 https://www.npmjs.com/signup 是一个公共数据库,存储了 JavaScript 软件包及其相关的元数据。开发者可以通过注册并登录到 npm 网站,将自己开发的软件包发布到注册表中,供其他人使用。

  3. 命令行工具(CLI):npm CLI 是开发者通过命令行或终端界面与 npm 进行交互的工具。开发者可以使用 npm CLI 安装、卸载、更新、发布、搜索软件包等操作。

如何安装使用

npm 不需要单独安装。在安装 Node 的时候,会连带一起安装 npm,但注意的是 npm 本身与 Node 的其他模块没有区别,他也仅仅是一个在node环境运行的js,因此也可以 用 npm 安装自己

shell
npm install npm -g

更新npm

shell
npm install npm@latest -g # 这将安装最新的官方测试版 npm。
npm install npm@next -g # 要安装将来发布的版本

npm-cli

npm-cli 作为是日常开发中接触最多部分,为我们提供了一些命令指令,查看提供指令方法可以使用

shell
npm help

或者使用

shell
npm -l

执行后可以看到 npm cli 提供的所有命令

Details
access, adduser, audit, bin, bugs, cache, ci, completion,
config, dedupe, deprecate, diff, dist-tag, docs, doctor,
edit, exec, explain, explore, find-dupes, fund, get, help,
hook, init, install, install-ci-test, install-test, link,
ll, login, logout, ls, org, outdated, owner, pack, ping,
pkg, prefix, profile, prune, publish, query, rebuild, repo,
restart, root, run-script, search, set, set-script,
shrinkwrap, star, stars, start, stop, team, test, token,
uninstall, unpublish, unstar, update, version, view, whoami

还可以通过 npm 代码去找到这些指令,因为npm 本质上就是通过node 触发的js 脚本,首先需要去找到我们本地安装 npm 的位置,

在 window 上可以在cmd执行 where npm 可以找到 ,在 linux 上执行 which npm 可以找到

以window 为例 在'node' 目录下如果你是windows用户可以 查看'npm.cmd' 文件

里面内容如图'脚本代码' ,通过这段脚本可以发现当在控制台输入'npm'的时候实际执行的命令为 'node \node_modules\npm\bin\npm-cli.js'

找到' \node_modules\npm\bin\npm-cli.js' 文件后如图'npm-cli.js' 打开'npm/bin/npm-cli.js'主要看下图这段代码,发现一段'npm.commands'变量调用,可以发现这个变量定义其中'npm' 这个变量是通过 "var npm = require('../lib/npm.js')" 引入的 找到 '/lib/npm.js' 文件找到变量'commands'这个

指令集合往上推大概在'node_modules\npm\lib' 文件下找到对应指令的js 文件,就可以发现如图'对应指令'

Released under the MIT License.