npm 学习笔记

2017-07-13  本文已影响204人  学不会灬
Paste_Image.png

1.npm简介

npm 是 2009 年开始的一个 javascript模块管理工具,也是最流行的代码共享平台之一。2013 年 npm 的模块总数是 4 万,2014 年就升到 8 万以上,超过所有其他同类平台。今年 4 月npm官方发了一份统计,截止 4 月全球估计有 4 百万用户使用 npm,并且这个数字每年会翻一倍。NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上很多问题,
常见的使用场景有以下几种:

2. npm 命令大全

2.1 简单查询
// 查看 npm 命令列表
$ npm help

//查看各个命令的简单用法
$ npm -l

//查看当前npm 的版本
$ npm -v

// 查看 npm 的配置
$ npm config list -l

// 以树型结构列出当前项目安装的所有模块,以及它们依赖的模块
$ npm ls

// 列出所有全局安装的模块
$ npm ls -g

// 全局和本地的依赖包的安装路径
$ npm root - g
$ npm root

// 查看全局或者本地的依赖包
$ npm list -g
$ npm list

// 查看依赖包的package.json 的信息,也可以单独查找某一个配置项
$ npm view <package name>
$ npm view <package name> dependencies  //查看gulp包的依赖关系
$ npm view <package name> repository.url  //查看gulp包的源文件地址

// 搜索远程资源库中的依赖包,当在需要发布一个依赖包的时候,可以用这个命令。查找是否已有依赖包
$ npm search <package name>

// 查看某个包的信息
npm info <package name>
2.2 npm init 命令
简单例子

npm init用来初始化生成一个新的package.json文件,package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件.它会引导用户设置一系列配置,如果你觉得不用修改默认配置,一路回车就可以了。

[注意:json文件内是不能写注释的,下面代码的注释是方便学习的笔记,一个最简单的例子)]

{
  "name": "test",   //项目名称(必须)
  "version": "1.0.0",   //项目版本(必须)
  "description": "This is for study npm project !",   //项目描述(必须)
  "homepage": "",   //项目主页
  "repository": {    //项目资源库
    "type": "git",
    "url": "https://git.oschina.net/xxxx"
  },
  "author": {    //项目作者信息
    "name": "oysun",
    "email": "web-oysun@qq.com"
  },
  "license": "ISC",    //项目许可协议
  "devDependencies": {    //项目依赖的插件
    "gulp": "^3.8.11",
    "gulp-less": "^3.0.0"
  }
}
Package.json 属性说明

<strong>name</strong>

<strong>version</strong>

<strong>description</strong>

<strong>homepage</strong>

<strong>keywords</strong>

<strong>author</strong>

<strong>bugs</strong>

{
    "url" :"http://github.com/owner/project/issues",
    "email" : "project@hostname.com"
}

<strong>license</strong>

"licenses" :
  [
    {
      "type" : "MyLicense",
      "url" :"http://github.com/owner/project/path/to/license"
    }
  ]

<strong>files</strong>

<strong>man</strong>

{
    "name" : "foo",
    "version" : "1.2.3",
    "description" : "A packaged foo fooer for fooing foos",
    "main" : "foo.js",
    "man" : "./man/doc.1"
}
{
    "name" : "foo",
    "version" : "1.2.3",
    "description" : "A packaged foo fooer for fooing foos",
    "main" : "foo.js",
    "man" : [ "./man/foo.1", "./man/bar.1" ]
}
{
    "name" : "foo",
    "version" : "1.2.3",
    "description" : "A packaged foo fooer for fooing foos",
    "main" : "foo.js",
    "man" : [ "./man/foo.1", "./man/foo.2" ]
}

<strong>directories</strong>

<strong>repository</strong>

"repository" :
  {
    "type" : "git",
     "url" : "http://github.com/isaacs/npm.git"
  }
"repository" :
  {
    "type" : "svn",
    "url" : "http://v8.googlecode.com/svn/trunk/"
  }

<strong>scripts</strong>

"scripts": {
    "dev": "node build/dev-server.js",
    "start": "node build/dev-server.js",
    "build": "node build/build.js",
    "lint": "eslint --ext .js,.vue src"
}

<strong>config</strong>

  http.createServer(...).listen(process.env.npm_package_config_port)

<strong>dependencies</strong>

<strong>devDependencies</strong>

{
  "name": "ethopia-waza",
  "description": "a delightfully fruity coffee varietal",
  "version": "1.2.3",
  "devDependencies": {
    "coffee-script": "~1.6.3"
    },
  "scripts": {
    "prepublish": "coffee -o lib/ -c src/waza.coffee"
  },
  "main": "lib/waza.js"
}
2.3 包安装命令
npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已.
// 本地安装
$ npm install <package name>

// 全局安装
$ npm install <package name> -global
$ npm install <package name> -g

// npm install也支持直接输入Github代码库地址
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0

// install命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上@和版本号。
$ npm install <package name>@latest
$ npm install <package name>@0.1.1
$ npm install <package name>@">=1.9.0 <3.1.0"

// 如果使用–save-exact参数,会在package.json文件指定安装模块的确切版本
$ npm install <package name> --save-exact
$ npm install <package name> -E

// 安装包信息将加入到dependencies(生产阶段的依赖)
$ npm install <package name> --save
$ npm install <package name> -S

// 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它
$ npm install <package name> --save-dev
$ npm install <package name> -D

install命令可以使用不同参数,指定所安装的模块属于哪一种性质的依赖关系,即出现在packages.json文件的哪一项中

–save:模块名将被添加到dependencies,可以简化为参数-S。
–save-dev: 模块名将被添加到devDependencies,可以简化为参数-D

一旦安装了某个模块,就可以在代码中用require命令加载这个模块。另外,模块的依赖都被写入了package.json文件后,他人打开项目的根目录(项目开源、内部团队合作),使用npm install命令可以根据dependencies配置安装所有的依赖包

2.4 包移除,更新插件命令
// 卸载已安装的模块
$ npm uninstall <package name>

// 检查本地有哪些本地包,列出需要更新的包的信息,需要更新的包的名称、当前版本号、最新的版本号等
$ npm outdated

// 更新本地安装的某个模块和全局模块
$ npm update <package name>
$ npm update  <package name> -g

// 全部更新
$ npm update
$ npm update -g

3. npm使用技巧

  1. 国内访问外网都很慢,甚至不能访问!大家都懂,都很无奈!
    使用淘宝的npm国内镜像可以极大的提高包下载的速度
$ npm config set strict-ssl false //取消ssl验证
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

  1. windows下无法直接删除node_modules,因为node_modules内部嵌套的子目录太多使用rimraf插件可以很好的解决问题
$ npm install rimraf -g
$ rimraf node_modules
  1. npm默认将全局包和缓存文件放在C盘。如果想更改路劲可以这样设置:
$ npm config set prefix "d:x\node"//修改nodejs全局包的安装路径
$ npm config set cache "D:\nodejs\npm-cache" //修改缓存路径

注意:由于改变了module的默认地址,所以上面的用户变量都要跟着改变一下“用户变量”PATH”修改为你重新设置的路径,要不,使用module的时候会导致输入命令出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误。

上一篇 下一篇

猜你喜欢

热点阅读