npm详细教程
参考:
https://www.cnblogs.com/zhuyutang/p/14863011.html
https://docs.npmjs.com/about-npm
1 npm是什么
npm是js的包管理工具,它由三个部分组成:
npm网站
- npm官网上可以查找包,查看包信息。
注册中心
- 存放js依赖包,我们可以将自己的包贡献其中,或者在注册中心下载依赖。
命令行工具npm-cli
- 开发者运行npm命令的工具
2 package
npm package,也就是我们通常说的包,npm是包管理工具,那什么是包呢?npm包指的是由package.json描述的文件或目录。可以是如下任何一种形式
- a) 一个包含package.json的文件夹
- b) 一个包含a的gzipped tarball
- c) 解析为b的一个URL
- d) 和c一起发布到注册中心的
- A <name>@<version> that is published on the registry with (c).
- A <name>@<tag> that points to (d).
- A <name> that has a latest tag satisfying (e).
- A git url that, when cloned, results in (a).
3 modules
一个模块是指,在node_modules路径下的文件或目录,这个文件或目录可以用Node.js的require()函数加载。
为了能够被Node.js的require()函数加载,module必须符合如下规定之一
- 包含package.json的文件夹,且package.json中含有main字段。
- 一个js文件
注意:只有包含package.json的module才称之为package。
4 scopes
scope相当于命名空间,在不同scope中可以有相同名称的package。
在package.json文件中列出的dependency,scoped packages以scope名称开始,scope名称以@开始,以/结束,比如
@npm/package-name
@npmcorp/package-name
公共包
任何人都可以下载public packages到自己的项目下面。
unscoped public packages存在于全局公共注册中心命名空间中。我们可以在package.json中直接引入它
package-name
scoped public packages属于某一个用户或组织,必须使用如下方式引入
@username/package-name
@org-name/package-name
私有包
私有包只允许特定组织或个人使用,我们平时几乎接触不到
5 从registry获取package
第一步 查询包
从npm网站查询包
第二步 安装包
执行如下命令进行包的安装
npm install <package_name>
npm install @scope/package-name
执行命令后,会在当前路径下面创建一个node_modules路径,并下载包到这个路径下面
全局安装
上面的安装方式只是在当前路径下安装依赖包。npm可以配置一个全局目录,我们可以选择把包安装在全局目录中
npm install -g <package_name>
6 更新依赖
检查更新
D:\code\xxx> npm outdated Package Depended by Current Wanted Latest Location @ant-design/charts pms-front 0.9.13 0.9.13 1.4.2 node_modules/@ant-design/charts @ant-design/icons pms-front 2.1.1 2.1.1 4.7.0 node_modules/@ant-design/icons @antv/data-set pms-front 0.10.2 0.10.2 0.11.8 node_modules/@antv/data-set @antv/g6 pms-front 3.8.5 3.8.5 4.7.4 node_modules/@antv/g6 @babel/runtime pms-front 7.18.3 7.19.0 7.19.0 node_modules/@babel/runtime
如果输出是空的,说明没有要更新的内容,否则,会提示你当前版本以及最新版本,可以自行决定是否需要更新。
更新
npm update
全局依赖的检查
npm outdated -g --depth=0
全局依赖的更新
npm update -g <package_name>
npm update -g
7 使用依赖
一旦我们在node_modules中安装了依赖包,我们就可以使用它了。
我们可以使用node中的require函数使用依赖包。
var lodash = require('lodash'); var output = lodash.without([1, 2, 3], 1); console.log(output);
8 npm CLI命令大全
8.1 npm run xxx
用于执行一个命令,具体命令再package.json中定义。
其运行原理:
以linux环境为例,每当执行npm run,就会自行创建一个bash,在这个bash里执行指定的脚本,因此只要bash里可以执行的命令,就可以写到npm脚本里面。比较特别的地方是,npm run新建的这个bash会将当前目录的node_modules/.bin子目录加到PATH变量中,执行结束后,再将PATH变量恢复原样。因此,node_modules/.bin下的脚本都可以直接用脚本名调用而不必加上路径。
8.2 npm ls --global --depth 0
列出全局安装的依赖
待补充...