本文共 4053 字,大约阅读时间需要 13 分钟。
npm学习记要
文章目录
前言
npm是个前端js模块管理工具,类似maven里的pom.xml
安装npm
npm(node package manager,NPM是随同NodeJS一起安装的包管理工具,所以我们需要下载安装nodejs
,选择Windows Installer (.msi)版本安装。一路点next。 测试是否安装成功 在CMD命令行输入命令:npm -v
有数据输出则表示安装成功
安装淘宝镜像
默认的镜像地址是:https://registry.npmjs.org/
,由于速度原因需要换成淘宝镜像
npm config set registry http://registry.npm.taobao.org/
这时只是修改的镜像地址,命令还是使用npm
cnpm (gzip 压缩支持)
命令行工具: npm install -g cnpm --registry=https://registry.npm.taobao.org"
以后就可以使用cnpm
代替npm
命令了
我们可以打开C:\Users\Administrator\.npmrc
文件,内容如下:
registry=http://registry.npm.taobao.org/
升级npm命令
由于npm自身的更新频率比Node.js高很多,所以通过上面的命令安装的npm可能不是最新版本
升级命令npm install npm@latest -g
安装模块自动写入package.json命令
安装的模块分为两类
dependencies和devDependencies,分别对应生产环境需要的安装包和开发环境需要的安装包。 devDependencies开发依赖:npm install <package_name> --save-dev
dependencies生产依赖: npm install <package_name> --save
新安装的模块信息记录到package.json文件的dependencies和devDependencies依赖里。 如果安装带版本号的模块,需要在package_name后加@,例如express@1.2
版本
卸载模块自动删除package.json命令
普通的卸载命令:npm uninstall <package_name>
npm uninstall --save
dependencies生产依赖:npm uninstall --save-dev
常用命令
帮助命令:npm help
查看帮助命令:npm help 命令(如install)
卸载模块:npm uninstall 模块名
更新模块:npm update 模块名
搜索模块:npm search 模块名
创建模块:npm init
创建默认配置package.json创建模块:npm init --yes
清空NPM本地缓存:npm cache clear
查看当前已经安装插件:npm list
查看当前哪些包需要更新:npm outdated --depth=0
上面命令都是本地安装后使用的命令,如果是全局安装,则在尾部加个-g
查看全局安装的文件路径:npm root -g
发布模块和取消/卸载模块
发布模块:npm publish
npm unpublish
废弃模块:npm deprecate <pkg>[@<version>] <message>
取消废弃模块:npm deprecate <pkg>[@<version>] ''
,取消作废操作,就是为message 参数指定一个空字符串("") 取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为
1 根据规范,只有在发包的24小时内才允许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours) 2 即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被“占用”了) npm unpublish的推荐替代命令:npm deprecate <pkg>[@<version>] <message>
使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告
更新版本
比如已经在npm中发布了一个1.0.0版本的包
1、本地更新版本号 比如我想来个1.0.1版本,注意,是最后一位修改了增1,那么命令:npm version patch
回车就可以了; 比如我想来个1.1.0版本,注意,是第二位修改了增1,那么命令 :npm version minor
回车就可以了; 比如我想来个2.0.0版本,注意,是第一位修改了增1,那么命令:npm version major
回车就可以了; 2、修改远端的版本,提交到远端npm中: npm publish
本地安装和全局安装
本地安装安装在当前目录的node_modules目录下,没有node_modules则创建。
全局安装安装在C:\Users\Administrator\AppData\Roaming\npm\node_modules
目录下,安装命令只差-g
, 本地安装:npm install express
全局安装:npm install express -g
ps 安装nodejs时同时安装了一些模块,位置在
C:\Program Files\nodejs\node_modules\npm\node_modules
修改npm配置
以全局下载目录为例,默认下载目录在C:\Users\Administrator\AppData\Roaming\npm\node_modules
,导致C盘变大,修改在D盘的D:\node_modules_global
路径下。
npm config list
内容如下:
D:\tmp\vsCode\test>npm config list; cli configsmetrics-registry = "http://registry.npm.taobao.org/"scope = ""user-agent = "npm/6.1.0 node/v8.11.3 win32 x64"; userconfig C:\Users\Administrator\.npmrcregistry = "http://registry.npm.taobao.org/"; builtin config undefinedprefix = "C:\\Users\\Administrator\\AppData\\Roaming\\npm"; node bin location = C:\Program Files\nodejs\node.exe; cwd = D:\tmp\vsCode\test; HOME = C:\Users\Administrator; "npm config ls -l" to show all defaults.
prefix就是指定全局路径。
设置prefix:
npm config set prefix=D:/node_modules_global
查看prefix值:
npm config get prefix
再次打开C:\Users\Administrator\.npmrc
文件,内容如下:
registry=http://registry.npm.taobao.org/prefix=D:/node_modules_global
#npm i和npm install的区别
两者都可以安装模块,但2者有区别- 用
npm i
安装的模块无法用npm uninstall删除,用npm uninstall i
才卸载掉 - npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号
- 部分npm包在当前node版本下无法使用,必须使用建议版本
- 安装报错时intall肯定会出现npm-debug.log 文件,npm i不一定
- npm install能生成
package.lock.json
文件,而npm i不能
总之建议使用npm install
命令
package.json作用
package.json是描述模块依赖关系以及包地址的配置文件。由于管理模块。
package-lock.json的作用
这个文件锁定了你第一次安装模块时的版本号,你和同事使用这个安装模块就不会出问题,package.json里的dependencies只能锁定大版本号,不能锁定你具体使用哪个版本号。2个json文件都是自动生成的,一般不手动修改。
#更好的依赖升级工具 —— npm-check
在中大型项目中,更新依赖需要十分谨慎,避免没有注意到新版本的依赖在 API 方面有重大更新(Breaking changes),而直接更新的情况。 安装方法:npm install -g npm-check
使用方法:
# 检查/更新全局依赖$ npm-check -gu# 检查/更新当前项目依赖$ npm-check -u
更新全局依赖
$ npm-check -gu
更新当前项目依赖
$ npm-check -u
#yarn
#安装淘宝镜像yarn config set registry https://registry.npm.taobao.org
转载地址:https://chenyuan.blog.csdn.net/article/details/80686025 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!