npm包管理器

包管理器 Node Package Manager:

1类:本地开发使用的包 (devDependencies),如:gulp
2类:项目依赖包 (dependencies),如:jquery

升级NodeJS: 这里使用n来管理node版本,更受欢迎的是使用nvm来管理:http://www.cnblogs.com/fanlinqiang/p/7741217.html

npm i n -g

n stable  //升级到最新版本

nv0.12.2     //升级到指定版本

注:n模块是专门用来管理nodejs版本的 

注:windows下升级npm: npm install npm@latest -g  

注:windows下升级node:下载指定版本 .msi 文件,安装到历史安装目录,即完成版本更新

     (附带最新版的npm, 可通过命令:where node,查看当前node的安装目录)。

初始化(生成package.json ,即npm脚本):

npm init

 

注:参数 -y 初始化过程中一路绿灯(一路yes)

安装包:

npm install [包名]

//例如:npm install gulp

 

注:install可简写为 i

注:参数 --global 简写 -g  ,全局安装,,默认为装在本地

注:参数 --save-dev 简写 -D,开发依赖包,写入package.json中的devDependencies

注:参数 --save 简写 -S,项目上线依赖包,写入package.json中的dependencies

# 只安装生产环境(dependencies)包:

npm i --product

# 卸载包:

npm remove | uninstall [包名]

注:参数 --global 全局卸载,简写 -g

#查看包信息:

npm info [包名]

#安装具体某个版本包:

npm i [包名]@[版本号] -D

//例:npm i gulp@3 -D     

         npm i gulp@2.7 -D

#查看已安装的包及其依赖包结构:

npm ls

#查看指定已安装包及其依赖

npm list | grep [包名]

#查看已过期的包:

npm outdated [包名]

注:包名可为空

#更新已安装包到最新版本:

npm update

#登录npm

npm login

#发布包

npm publish

执行package.json中自定义的脚本scripts:

如:

npm run iu

#更新npm至最新版本:

npm install -g npm

#清除缓存:
npm cache clean

注:    package.json中的版本号控制中的 ^ 表示保证第一位为锁定,其他位为最新版本,

如:当package.json,记录gulp为^1.7.2而最新版本为1.8.5,则init时会下载1.8.5

~保证前两位为锁定,如:~1.7.2 (常用)

*保证最新版本,如: *

不带任何符号,只有版本号,如:1.7.2,则构建时只会下载对应的版本号 (常用)

 注:packge.json中的name是发布包时的唯一标识,因此不能重复

nrm

nrm 是一个管理 npm 源的工具。用过 ruby 和 gem 的同学会比较熟悉,通常我们会把 gem 源切到国内的淘宝镜像,这样在安装和更新一些包的时候比较快。nrm 同理,用来切换官方 npm 源和国内的 npm 源(如: cnpm),当然也可以用来切换官方 npm 源和公司私有 npm 源。

全局安装 nrm:

npm i nrm -g

查看当前 nrm 内置的几个 npm 源的地址:

$ nrm ls

 

* npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  eu ----- http://registry.npmjs.eu/
  au ----- http://registry.npmjs.org.au/
  sl ----- http://npm.strongloop.com/
  nj ----- https://registry.nodejitsu.com/

nrm test 测试各个源速度

nrm use cnpm 切换源

 

国内NPM安装依赖速度慢问题

使用淘宝镜像:http://npm.taobao.org/

方案一(推荐):使用cnpm代替npm,并指定其源为淘宝镜像

npm install cnpm -g --resgistry=https://resgistry.npm.taobao.org

之后安装都可使用cnpm代替npm ,如:

cnpm install gulp

 

方案二:在安装时可以手动指定从哪个镜像服务器获取资源,使用阿里巴巴在国内的镜像服务器

npm install -gd express --registry=http://registry.npm.taobao.org

只需要使用–registry参数指定镜像服务器地址,为了避免每次安装都需要--registry参数,可以使用如下命令进行永久设置:

npm config set registry http://registry.npm.taobao.org

注:cnpm与npm还是有区别的,使用npm安装会附带一些其他信息,如使用 npm ls命令时

npm install 生成的package-lock.json是什么文件?有什么用?

package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json.
 It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless
 of intermediate dependency updates.

大概意思是:package-lock.json是当 node_modules 或 package.json 发生变化时自动生成的文件。这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新。

 

错误记录: 

一、使用npm安装sudo npm install weex-toolkit -g报错,使用chmod -R 777 /Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules 无效...

后使用cnpm install weex-toolkit -g

npm ERR! path /Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules/weex-toolkit/node_modules/acorn
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall access
npm ERR! enoent ENOENT: no such file or directory, access '/Users/linqiang/.nvm/versions/node/v10.8.0/lib/node_modules/weex-toolkit/node_modules/acorn'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/linqiang/.npm/_logs/2018-08-07T02_35_27_880Z-debug.log

 

posted @ 2017-10-27 08:46  fanlinqiang  阅读(370)  评论(0编辑  收藏  举报