npm操作与发布npm包
- 什么是npm?
npm是javascript的包管理工具,是前端模块化下的一个标志性产物。在项目中,会使用npm下载很多库和包,如果自己造轮子可能会赶不上项目的预期
npm安装
安装nodejs就会附带上npm包管理工具了使用 -v 查看下版本号
npm -v
切换npm源
国内使用淘宝镜像能下载包的时候比较快,因为npm是国外服务器,速度缓慢,我们一般都是配置成淘宝镜像,方法有多种
- 还原成npm的镜像源
npm config set registry http://registry.npmjs.org/
- 设置成淘宝镜像(方法一)
npm config set registry http://registry.npm.taobao.org/
- 安装cnpm,以后使用cnpm来安装包
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install jquery
安装包
- npm install -g 模块
全局安装,像一般的脚手架都是全局安装,比如vue-cli,create-react-app
- npm install 模块
安装好后不写入package.json中
- npm install 模块 --save
安装好后写入package.json的dependencies中(生产环境依赖)
- npm install 模块 --save-dev
安装好后写入package.json的devDepencies中(开发环境依赖),一般只会在开发环境使用的就只开发环境依赖安装了,就像打包、打包分析、调试工具的那些模块等
- 指定版本号安装模块
// ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0(大版本相同)
npm install jquery^1.0.0
// ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0(大版本、二号版本都相同)
npm install jquery~1.0.0
// @会指定版本安装
npm install jquery@1.0.0
// *会安装最新的版本,不加这些符号的话,安装的是稳定版本
npm install jquery*
删除包
- npm uninstall -g 模块
删除全局的模块
- npm uninstall 模块
删除模块,但不删除模块留在package.json中的对应信息
- npm uninstall --save 模块
删除模块,同时删除模块留在package.json中dependencies下的对应信息
- npm uninstall --save-dev 模块
删除模块,同时删除模块留在package.json中devDependencies下的对应信息
查看包
- 查看已经全局安装的包
npm list -g --depth=0
- 查看线上的包
npm show jquery
- npm 查看模块全部版本:(jquery)
npm view jquery versions
发布npm包
-
1、注册npm账号,注意的是邮箱要去验证,别用qq邮箱,我填qq邮箱收不到验证邮件
-
2、将镜像源切换成npm的
可能还会出现一些问题,可以参考npm发布包常见问题
- 2、在终端输入npm login
然后输入你创建的账号和密码,和邮箱,登陆。就可以在npm上面看到得到了一个Token,就能忘npm上发布包了
- 3、npm publish
如果已经存在了,比如vue,react这些,你就没法发布了,所以你可以先去npm搜索下。跟.gitignore相似的.npmignore可以配置不同步到云端的部分
npm撤销发布包
npm包发布24小时后就不能撤销了,防止你的包已经被别人使用(试想一下你撤销了发布的包,假设它已经在社区内有了一定程度的影响,这对那些已经深度使用并依赖你发布的包的团队是件多么崩溃的事情!)
npm unpublish的推荐替代命令:npm deprecate [@]
npm deprecate jquery
npm更新发布后的包
事实上npm更新包和发布包的命令是一样的,都是npm publish,不同之处在于,你需要修改包的版本
- 1、修改package.json的版本号
- 2、npm publish
在我们的package.json里面有一个version字段。那么,怎么在项目不断构建的过程中调整版本呢?
对于"version":“x.y.z”
1.修复bug,小改动,增加z
2.增加了新特性,但仍能向后兼容,增加y
3.有很大的改动,无法向后兼容,增加x