npm不得不知的事

348 阅读3分钟

npm

npm 全称'node package management',是nodejs内置的软件包管理器。 虽然它起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前 端 JavaScript 中使用的工具。

为什么会出现包管理工具

很多语言都有这种包管理工具,Python的pip,Java的Maven一样的作用,包管理, 最初的时候Node.js 是一个在德国工作的美国程序员 Ryan Dahl 写的。他写了 Node.js,但 是 Node.js 缺少一个包管理器,于是他和 npm 的作者(Isaaz)一拍即合、抱团取暖,最 终 Node.js 内置了 npm

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

npm 的背后,是基于 couchdb 的一个数据库,详细记录了每个包的信息,包括作者、版
本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版
本、依赖等)中解放出来,更加专注于功能的开发。
npm 构成
1.npm 由三个独立的部分组成:
 1.1.'网站' -- https://www.npmjs.com/,使用该网站发现软件包,设置配置文件以及管理
 npm体验的其他方面。例如,可以设置组织(组织)来管理对公共或私有软件包的问。
 1.2.'注册表'(registry)-- https://www.npmjs.com/signup,该注册表是JavaScript软件及
 其周围的元信息的大型公共数据库(注册账号后在npm网站自行发布npm包)
 1.3.'命令行工具' (CLI) -- 开发者运行npm命令的工具,可以理解成通过命令行或终端运
 行。开发者通过 CLI 与 npm 打交道。
npm-cli
1.三个构成部分中对npm-cli 是日常开发中接触最多,例如'npm install''npm ls'等,
那是如何执行这部分指令的呢?
 在控制台输入' npm root -g' 可以帮助我们找到全局的`node_modules`文件夹打印出来,
如果你没有做自定义全局'node_modules'前提,本质上来说找到全局的`node_modules` 
相当于找到了'node' 安装目录,在node 目录中就可以看到下图
 下图中打开npm.cmd 如果你是linux 你可以打开npm 文件来查看内容,如下图可以
看出这段脚本帮我们调用全局的'node_modules'文件下的npm/bin/npm-cli.js,
具体调用其实就是'node npm-cli.js'。
  打开'npm/bin/npm-cli.js'主要看下图这段代码,其中npm 这个变量是通过
var npm = require('../lib/npm.js') 引入的 在看'/lib/npm.js' 文件找到变量'commands'
这个指令集合往上推大概在'node_modules\npm\lib' 文件下找到对应指令的js 文件
总结:'所以到目前为止,我们可以知道当在命令行输入npm时,其实是在node环境中,执行了一段npm-cli.js代码'

  • node 目录

image.png

  • 脚本代码

image.png

  • npm-cli.js

image.png

  • 对应指令

image.png

安装
1.npm 不需要单独安装。在安装 Node 的时候,会连带一起安装 npm
  • 或者 npm install npm -g
1. 为什么可以自己安装自己? npm 本身与 Node 的其他模块没有区别,他也仅仅是一个
一个在node环境运行的js
更新
1.npm install npm@latest -g -- 这将安装最新的官方测试版 npm。
2.npm install npm@next -g -- 要安装将来发布的版本

参考文章

npm基本用法及原理(10000+) - 漫漫字节|漫漫编程 (mmbyte.com)

Vue笔记——npm详细教程 - 简书 (jianshu.com)