You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
npm view koa
npm v koa
npm info koa
npm list koa //查看koa当前版本
npm show koa
npm v koa version //查看koa目前的版本
npm -v //查看npm自己的版本
npm search /^req/ //search搜索npm库,后面可以用string或者正则表达式
npm
1.npm介绍
npm是node中的一个模块管理器,用来安装和管理node模块,npm不需要单独安装,在安装完node会安装对应版本的npm。但是node没有升级,npm可能不是最新的,可以通过npm本身来安装自己:
@后面跟的是版本号,latest表示安装最新版本,-g是全局安装。
在linux中通过man命令来查看手册,不过安装玩node后,man命令可以查到node的手册,但是查不到npm,是因为安装的是node,默认把node的man查看手册加入到了配置文件但是没有加npm。npm使用可以通过以下两个命令来查看:
2.npm安装模块
初始化项目
这个命令可以加两个参数,-f(force) 强制初始化,-y(yes)跳过提问阶段,使用默认值来生成package.json。
如果不用参数,会有初始化的一些提问,包括name,version,description,entry point,test command,git,keywords,license等,最后会生成package.json文件,这个文件就是用来记录项目所用到的依赖模块,用npm安装时可以把模块名称加入到这里,发布的时候供他人使用时不需要node_modules,有这个package.json可以自行安装。
模块安装
这个命令不带参数是根据当前项目的package.json安装所有的模块,当你下载别人发布的项目时,根据package.json来安装模块。
后面还可以跟模块名称来安装模块。--save安装的一般是生产环境用到的模块,可以简写为 -S,--save-dev安装的一个是测试环境
可以简写为-D。安装之后在项目跟目录下会生成一个node_modules的文件夹,这里存放安装的模块已经模块的依赖,新版npm(具体多新不清楚)
安装的时候不在是递归安装,而是平行安装,所以安装一个模块在node_modules文件里面会有一堆文件夹,这样做一是为了模块复用,二是为了
使得模块路径变短,文件名过长在windows里面无法删除。
‘离线安装’
在用户主目录下有一个.npm的目录:
$HOME/.npm ,这个目录保存着大量文件,是npm intall时下载的压缩包,如果用不到可以用以下命令清空
npm install的时候只会检查本地的node_modules目录,并不会检查这个目录,这样每次安装模块都会从远程registry下载,
对于不是全局安装的模块,多个项目就会重复安装,为了解决这个npm提供了一种方式:
本地缓存时间超过time的模块才会从registry下载,这个其实也不算是离线安装,还是需要联网对比是否需要重新下载。
如果模块不在缓存目录中,那么还是会连接registry下载最新版本,如果安装模块在缓存中,且下载版本在指定范围内,则使用
缓存模块,如果缓存版本不满足下载版本会报错。
3.npm更新和配置
npm查看模块信息
用以上命令可以查看目前某个模块详细的信息,也可以增加参数来查看具体的信息。在更新的时候,或者需要对比版本信息的时候
就需要用到这些命令。如果要查看模块的文档可以通过 https://npmjs.org/package/模块名称 来查看,这里有介绍,
版本号,最后更新时间,模块源码链接,bug链接,README页面。也可以查看模块代码库:
通过上的npm可查看具体的某个模块的版本,如果要更新模块,需要查看所有本地模块和目前模块版本的对比,然后选择性更新
它会输出当前版本(current version)、应当安装的版本(wanted version)和最新发布的版本(latest version)
列出当前项目所用到的模块:
之前提到了一个版本范围,同时在package.json里面也会看到 ~,^,* 等符号,package.json中的版本:大版本.次要版本.小版本
知道了模块信息和版本,可以选择更新,也可以全部更新
有时候可能更新不成功,可能于版本有关,不过不用去纠结,可以安装指定最新的版本,或者卸载现在的模块重新安装
配置
大家可能遇到过这样的情况,用npm安装一个模块的时候会出现超时的错误,或者说在公司内网,由于防火墙的限制无法安装
这时候就需要对npm做一下简单的配置。
之前我们提到在主目录下有一个 .npm 的缓存目录,其实在主目录下还有一个npm的配置文件 .npmrc
在这个配置文件中有很多信息, npm init 的时候也是根据这个文件来初始化的。打开这个配置文件,一般会看到
save-exact = true ,这个配置是在安装模块写入package.json的时候是确定的版本,不是版本范围。
上面设置的作者和邮箱,在配置文件中是可以看到的,同时初始化的时候会默认用这两个参数。一般全局安装的模块是
/usr/local/lib/,这个一般用户没有权限写入,可以设置一个模块的全局安装目录让普通用户也有写入的权限。
回到开始提到的无法安装模块的问题,这时需要设置一个代理或者搭建镜像
设置这些后一般情况是可以正常下载的,不过在publish的时候需要删掉。或者有一个模块 cnpm 也可以从国内源下载模块。
最后说一点,在package.json中有一个script的字段,这里设置了可以执行的脚本。里面是的key,可以通过
来执行,例如:
等同于 npm mocha --harmony test。
4.npm 模块发布
file-csv,是我发布的一个模块
更新包:
x: 主版本号,通常有重大改变或者达到里程碑才改变;
y: 次要版本号,或二级版本号,在保证主体功能基本不变的情况下,如果适当增加了新功能可以更新此版本号;
z: 尾版本号或者补丁号,一些小范围的修修补补就可以更新补丁号.
参考:
https://github.com/muwenzi/Program-Blog/issues/12
http://javascript.ruanyifeng.com/nodejs/npm.html
http://www.ruanyifeng.com/blog/2016/01/npm-install.html
ericdum/mujiang.info#6
http://www.cnblogs.com/jingmoxukong/p/6228358.html
The text was updated successfully, but these errors were encountered: