首页 存档 技术 查看内容

【第533期】玩转npm

2018-3-30 13:00 |来自: 互联网 370 0

摘要: 前言 上周前端圈最重磅新闻是一个开发者对NPM公司不满,unpublish了自己的所有模块。其中包括被广泛使用的left-pad,导致Babel、ReactNative、Ember等大量工具构建失败。从而引发了全民left-pad。那么npm狠熟悉又狠 ...

前言

上周前端圈最重磅新闻是一个开发者对NPM公司不满,unpublish了自己的所有模块。其中包括被广泛使用的left-pad,导致BabelReactNativeEmber等大量工具构建失败。从而引发了全民left-pad。那么npm狠熟悉又狠陌生,今天由alloyteam童鞋@TAT.云中飞扬带来的关于npm的那些事。


正文从这开始~


npm本来是Node.js的包管理工具,但随着JS这几年的蓬勃发展,现在的npm已经成了几乎所有跟JS相关的工具和软件包的管理工具了,并且还在不断发展完善中。


本文从笔者的经验,总结了npm安装/卸载、更新、发布这几个最主要功能的正确使用姿势和一些小技巧,顺便从官网搬来了npm3处理依赖的重大变化。


npm3

npm团队已经发布了npm3,近期有小伙伴吐槽npm3安装软件包的时候很慢,一开始笔者也感觉相比npm2慢了不少,但经过了几个版本的迭代,速度似乎又快起来了。


慢的同学是时候更新你的npm啦,而且之前安装进度条模糊成一坨的问题也已经修复了。


npm v3.0安装react的截图



npm v3.8安装react的截图



npm提供了大量的命令,所有的命令几乎都可以通过npm cmd [options]的方式使用。


npm -h

学习一个命令行工具,最简单直接的方式就是查看它的用户手册,npm提供了并不算很详细的命令行手册,可以通过npm -h查看(unix用户还可以通过man npm查看,相对来说比windows详细多了),需要某个npm命令更详细的文档则需要通过npm help cmdnpm help install来查看,注意不是 npm install help ,这样将会安装help包。


另外npm cmd -h也是一个快速查看命令可以怎么使用和搭配哪些常用选项的方法。


npm init

说到npm就不得不说package.json,每一个npm包都必须有一个package.json文件,年轻时候的我还傻乎乎的从其他地方拷贝package.json过来然后修改,为了自动化还写了个自动生成的脚本。


后来才发现原来npm自带此功能,官方原厂功能更好更强大,只需要执行npm init即可,以交互方式完成package.json的创建。


如果想生成默认package.json,可以执行npm init -y,连交互式界面都不会出现。


另外需要注意,npm init的时候需要输入用户字段,如果还没有设置npm用户,需要通过npm addUser设置。


事实上,最小单位的npm包就是只包含一个package.json文件的包,这样的话npm init就完成了一个npm包的创建。


npm install/uninstall

npm install作为npm最重要的功能和最常用的功能,不用过多说明,这里只介绍三个非常有用的选项globalsavesave-dev


想必读者肯定知道global可以简写成-g,其实另外两个选项也有简写形式,save可以简写成-Ssave-dev可以简写成-D,注意大写。


另外npm install也可以简写成npm i,相应的卸载命令npm uninstall可以简写成npm un,事实上npm的很多命令和选项在设计上都非常类似unix上的命令行功能,这里指的是命令和选项都可以极大化地简写,只要在不混淆的情况下。


npm uninstallnpm install接受同样的选项和参数。


save的作用是在packaje.jsondependencies字段增加或者修改一个安装包和版本号名值对,save-dev则是修改devDependencies,这样就不用安装了某个包之后手动修改package.jsonnpm已经帮我们把包依赖和版本管理做好了。


以安装react为例,

npm i react -S将为package.json增加



npm i react -D将增加



npm update

假如react@15(版本号,下同)发布了,想尝鲜的小伙伴该怎么更新呢?


首先得知道npm上是否已经更新,npm info react可以查看到reactnpm上发布过哪些版本以及最新的版本,但是内容太多,让人眼花缭乱,配合grep会好一些。


其实我们只想知道react最新的版本,使用npm dist-tags ls react直接列出react发布过哪些tag


以及这些tag目前最新是哪些版本,比如最常用的latest,也是默认tag


next tag已经发布了react@15的第一个rc版了,尝鲜的朋友可以试一试了。


另外一个命令npm outdated,会检测当前安装的所有npm包是否有更新,并列出可以更新的包,如果没有任何输出,那么恭喜你,所有的包都是不需要更新的。


如果之前安装的react版本是0.14.3,同时还安装了[email protected],执行npm outdated会输出


这种情况则说明reactredux该更新了,更新具体某个包使用npm update package_name即可,npm update则会更新所有可更新的包。


npm publish

npm作为一个大仓库,每天都有大量的新包发布上来,发布自己的包非常容易,而且几乎零门槛,对应的发布的命令是npm publish,但前提是你需要一个npm账号。


假设已经有账号了,在发布之前需要使用npmlogin进行登录,正式发布之前请先阅读以下关于版本号的介绍。

npm包的版本号一般都是x.y.z的形式。


  • 其中x表示主版本号,通常有重大改变或者达到里程碑才改变;

  • y表示次要版本号,或二级版本号,在保证主体功能基本不变的情况下,如果适当增加了新功能可以更新此版本号;

  • z表示尾版本号或者补丁号,一些小范围的修修补补就可以更新补丁号。


第一版本通常是0.0.1或者1.0.0,当修改了代码,需要更新版本号重新发布到npm,不知道的小伙伴(年轻的我)肯定会手动修改package.jsonversion字段,而高级的玩法是直接使用npmversion

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部