`
oywl2008
  • 浏览: 1053368 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

NPM小结

 
阅读更多

nodejs的出现,可以算是前端里程碑式的一个事件,它让前端攻城狮们摆脱了浏览器的束缚,踏上了一个更加宽广的舞台。前端的可能性,从此更加具有想象空间。

随着一系列基于nodes的应用/工具的出现,工作中与nodejs打交道的机会越来越多。无论在node应用的开发,还是使用中,包管理都扮演着一个很重要的作用。NPM(node package manager),作为node的包管理工具,极大地便利了我们的开发工作,很有必要了解一下。

NPM是什么

NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。

npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

npm官网: https://npmjs.org/

npm官方文档: https://npmjs.org/doc/README.html

我们需要了解什么

  1. npm的安装、卸载、升级、配置
  2. npm的使用:package的安装、卸载、升级、查看、搜索、发布
  3. npm包的安装模式:本地 vs 全局
  4. package.json:包描述信息
  5. package版本:常见版本声明形式

npm包安装模式

在具体介绍npm包的管理之前,我们首先得来了解一下npm包的两种安装模式。

本地安装 vs 全局安装(重要)

node包的安装分两种:本地安装、全局安装。两者的区别如下,后面会通过简单例子说明

  • 本地安装:package会被下载到当前所在目录,也只能在当前目录下使用。
  • 全局安装:package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用。

npm install pkg - 本地安装

运行如下命令,就会在当前目录下安装 grunt-cli (grunt命令行工具)

npm install grunt-cli

安装结束后,当前目录下回多出一个 node_modules 目录,grunt-cli就安装在里面。同时注意控制台输出的信息:

grunt-cli@0.1.9 node_modules/grunt-cli
├── resolve@0.3.1
├── nopt@1.0.10 (abbrev@1.0.4)
└── findup-sync@0.1.2 (lodash@1.0.1, glob@3.1.21)

简单说明一下:

  • grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19
  • node_modules/grunt-cli:安装目录
  • resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来

npm install -g pkg- 全局安装

上面已经安装了grunt-cli,然后你跑到其他目录下面运行如下命令

grunt

果断提示你grunt命令不存在,为什么呢?因为上面只是进行了 本地安装 ,grunt命令只能在对应安装目录下使用。

-bash: grunt: command not found

如果为了使用grunt命令,每到一个目录下都得重新安装一次,那不抓狂才怪。肿么办呢?

很简单,采用全局安装就行了,很简单,加上参数 -g 就可以了

npm install -g grunt-cli

于是,在所有目录下都可以无压力使用 grunt 命令了。这个时候,你会注意到控制台输入的信息有点不同。主要的区别在于安装目录,现在变成了/usr/local/lib/node_modules/grunt-cli ,/usr/local/lib/node_modules/ 也就是之前所说的全局安装目录啦。

grunt-cli@0.1.9 /usr/local/lib/node_modules/grunt-cli
├── resolve@0.3.1
├── nopt@1.0.10 (abbrev@1.0.4)
└── findup-sync@0.1.2 (lodash@1.0.1, glob@3.1.21)

npm包管理

npm的包管理命令是使用频率最高的,所以也是我们需要牢牢记住并熟练使用的。其实无非也就是几个动作:安装、卸载、更新、查看、搜索、发布等。

安装最新版本的grunt-cli

npm install grunt-cli

安装0.1.9版本的grunt-cli

npm install grunt-cli@"0.1.9"

通过package.json进行安装

如果我们的项目依赖了很多package,一个一个地安装那将是个体力活。我们可以将项目依赖的包都在package.json这个文件里声明,然后一行命令搞定

npm install

其他package安装命令

运行如下命令,列出所有 npm install 可能的参数形式

npm install --help

输出如下,有兴趣的童鞋可以了解下

npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install <pkg>
npm install <pkg>@<tag>
npm install <pkg>@<version>
npm install <pkg>@<version range>

卸载grunt-cli

比如卸载grunt-cli

npm uninstall grunt-cli

卸载0.1.9版本的grunt-cli

npm uninstall grunt-cli@"0.1.9"

npm ls:查看安装了哪些包

运行如下命令,就可以查看当前目录安装了哪些package

npm ls

输出如下

/private/tmp/npm
└─┬ grunt-cli@0.1.9
  ├─┬ findup-sync@0.1.2
  │ ├─┬ glob@3.1.21
  │ │ ├── graceful-fs@1.2.3
  │ │ ├── inherits@1.0.0
  │ │ └─┬ minimatch@0.2.12
  │ │   ├── lru-cache@2.3.0
  │ │   └── sigmund@1.0.0
  │ └── lodash@1.0.1
  ├─┬ nopt@1.0.10
  │ └── abbrev@1.0.4
  └── resolve@0.3.1

输出如下,同样,如果是要查看package的全局安装信息,加上 -g 就可以

npm ls pkg:查看特定package的信息

运行如下命令,输出grunt-cli的信息

npm ls grunt-cli

输出的信息比较有限,只有安装目录、版本,如下:

/private/tmp/npm
└── grunt-cli@0.1.9 

如果要查看更详细信息,可以通过 npm info pkg ,输出的信息非常详尽,包括作者、版本、依赖等。

npm info grunt-cli

npm update pkg:package更新

npm update grunt-cli

npm search pgk:搜索

输入如下命令

npm search grunt-cli

返回结果如下

npm http GET http://registry.npmjs.org/-/all/since?stale=update_after&startkey=1375519407838
npm http 200 http://registry.npmjs.org/-/all/since?stale=update_after&startkey=1375519407838
NAME                  DESCRIPTION                                        AUTHOR            DATE              KEYWORDS
grunt-cli             The grunt command line interface.                  =cowboy =tkellen  2013-07-27 02:24
grunt-cli-dev-exitprocess The grunt command line interface.              =dnevnik          2013-03-11 16:19
grunt-client-compiler Grunt wrapper for client-compiler.                 =rubenv           2013-03-26 09:15  gruntplugin
grunt-clientside      Generate clientside js code from CommonJS modules  =jga              2012-11-07 01:20  gruntplugin

npm发布

这个命令我自己也还没实际用过,不误导大家,语法如下,也可参考官方对于package发布的说明 https://npmjs.org/doc/developers.html :

npm publish <tarball>
npm publish <folder>

NPM配置

npm的配置工作主要是通过 npm config 命令,主要包含增、删、改、查几个步骤,下面就以最为常用的proxy配置为例。

设置proxy

内网使用npm很头痛的一个问题就是代理,假设我们的代理是 http://proxy.example.com:8080,那么命令如下:

npm config set proxy http://proxy.example.com:8080

由于 npm config set 命令比较常用,于是可以如下简写

npm set proxy http://proxy.example.com:8080    

查看proxy

设置完,我们查看下当前代理设置

npm config get proxy

输出如下:

同样可如下简写:

npm get proxy

删除proxy

代理不需要用到了,那删了吧

npm delete proxy

查看所有配置

npm config list

直接修改配置文件

有时候觉得一条配置一条配置地修改有些麻烦,就直接进配置文件修改了

npm config edit

关于package.json

这货在官网似乎没有详细的描述,其实就是包的描述信息啦。假设当我们下载了node应用,这个node应用依赖于A、B、C三个包,如果没有package.json,我们需要人肉安装这个三个包(如果对版本有特定要求就更悲剧了):

npm install A
npm install B
npm install C

有了package.json,一行命令安装所有依赖。

npm install

package.json字段简介

字段相当多,但最重要的的是下面几个

  1. name: package的名字(由于他会成为url的一部分,所以 non-url-safe 的字母不会通过,也不允许出现"."、"_"),最好先在 http://registry.npmjs.org/上搜下你取的名字是否已经存在
  2. version: package的版本,当package发生变化时,version也应该跟着一起变化,同时,你声明的版本需要通过semver的校验(semver可自行谷歌)
  3. dependencies: package的应用依赖模块,即别人要使用这个package,至少需要安装哪些东东。应用依赖模块会安装到当前模块的node_modules目录下。
  4. devDependencies:package的开发依赖模块,即别人要在这个package上进行开发
  5. 其他:参见官网

package版本

在package.json里,你经常会在包名后看到类似"~0.1.0"这样的字符串,这就是包的版本啦。下面会列举最常见的版本声明形式,以及版本书写的要求:

常见版本声明形式

a、"~1.2.3" 是神马意思呢,看下面领悟

"~1.2.3" = ">=1.2.3 <1.3.0"
"~1.2" = ">=1.2.0 <1.3.0"
"~1" = ">=1.0.0 <1.1.0"

b、"1.x.x"是什么意思呢,继续自行领悟

"1.2.x" = ">=1.2.0 <1.3.0"
"1.x.x" = ">=1.0.0 <2.0.0"
"1.2" = "1.2.x"
"1.x" = "1.x.x"
"1" = "1.x.x"

版本书写要求

  1. 版本可以v开头,比如 v1.0.1(v只是可选)
  2. 1.0.1-7,这里的7是所谓的“构建版本号”,不理是神马,反正版本大于1.0.1
  3. 1.0.1beta,或者1.0.1-beta,如果1.0.1后面不是 “连字符加数字” 这种形式,那么它是pre release 版本,即版本小于 1.0.1
  4. 根据b、c,有:0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta

写在后面

内容只是简单地把最常见的命令,以及一些需要了解的内容列了出来。如要进一步了解,可参考官网说明。此外, npm help 是我们最好的朋友,如果忘了有哪些命令,命令下有哪些参数,可通过help进行查看。

最关键的:如果文章内容有误,请指出!!!

 

 

http://www.tuicool.com/articles/VB7nYn

分享到:
评论

相关推荐

    yarn与npm的命令行小结

    一、首先需要了解的命令 ...在 npm 中,可以使用 npm config set save true 设置 — -save 为默认行为,但这对多数开发者而言并非显而易见的。在 yarn 中,在package.json 中添加(add)和移除(re

    安装npm包管理器小结

    本文将对安装npm包管理器的过程进行详细总结,包括安装Node.js、配置npm、使用yarn以及解决常见的安装问题。对于前端开发者来说,掌握这些步骤是至关重要的,因为npm是JavaScript和Node.js生态系统的核心部分,用于...

    nvm、nrm、npm 安装和使用详解(小结)

    如果之前是在官网下载的 node 安装包,运行后会自动安装在全局目录,其中node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目录中,具体路径为 /usr/local/lib/node_modules/npm 安装

    修改node.js默认的npm安装目录实例

    #### 小结 本文详细介绍了如何修改Node.js默认的NPM安装目录,包括查看当前配置、创建新的安装目录、设置新路径以及测试新配置等步骤。通过这些步骤,我们可以更灵活地管理项目的依赖包,提高开发效率。希望本文能...

    React Native 开发指南_中文扫描完整版

    1.3 小结 4 第2章 React Native 工作原理 5 2.1 React Native 是如何工作的 5 2.2 渲染周期 7 2.3 在React Native 中创建组件 2.4 宿主平台接口 11 2.5 小结 12 第3章 构建你的第一个应用 13 3.1 搭建环境 ...

    三种Webpack打包方式(小结)

    npm init #创建package.json文件 npm install --save-dev webpack #安装依赖(非全局安装) mkdir app && mkdir public #新建app和public文件夹 cd app && cd.&gt;Greeter.js && cd.&gt;main.js #app文件夹中创建Greeter....

    echarts使用小结

    如果使用npm,可以通过命令`npm install echarts`进行安装,然后在项目中引入。 ```html &lt;script src="path/to/echarts.min.js"&gt;&lt;/script&gt; ``` **二、创建图表容器** 在HTML中,我们需要创建一个用于显示图表的`...

    解决node-sass偶尔安装失败的方法小结

    在浏览器中打开复制的下载链接,下载完成后,通过设置环境变量`SASS_BINARY_PATH`指向本地已下载的`.node`文件位置,这样npm安装时就会使用本地文件,避免网络下载失败的问题。例如,如果文件保存在`D:/WorkCode`...

    【JavaScript源代码】Angular环境搭建及简单体验小结.docx

    【Angular环境搭建及简单体验小结】 Angular是一个由Google开发并维护的开源Web前端框架,自2009年由Misko Hevery等人创立以来,它已成为业界广泛采用的JavaScript框架。Angular以其强大的功能和对中大型企业级项目...

    Vuex的初探与实战小结

    安装 Vuex 很简单,你可以使用 Vue CLI 创建项目后,通过 `npm install vuex --save` 或 `cnpm install vuex --save` 安装依赖。接着在 `src/store` 目录下创建 `index.js` 文件,配置好 store 的结构。最后,在 `...

    VUE小结项目实战,实现双色球单式机选

    而`package-lock.json`是当`npm install`执行后生成的,它详细记录了每个依赖包的确切版本,确保在不同环境中安装的依赖包一致,避免版本冲突问题。 `README.md`文件通常包含项目简介、安装指南、使用方法和贡献者...

    node-test-demo:Nodejs单元测试小结

    Nodejs单元测试小结 依赖 node &gt;= 0.12.2 mongodb &gt;= 3.0.3 测试 mocha 测试覆盖率 windows: ./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha*

    Angular CLI 使用教程指南参考小结

    要安装Angular CLI你需要先安装node和npm,然后运行以下命令来安装最新的Angular CLI: 注意:Angular CLI 需要Node 4.X 和 NPM 3.X 以上的版本支持。 npm install -g angular-cli 在 Mac 或 Linux 平台上,你...

    node.js基础知识小结

    除此之外,node.js也有pip一样的工具npm,使用npm可以轻松地安装第三方软件,这给我们的开发工作带来了极大的方便。乘着周末,学习一下node.js,确实不错。 1、安装node.js sudo apt-get install nodejs 2、安装npm...

    nodejs安装及环境配置

    小结 至此,用户已经成功安装和配置了 Node.js 环境。现在用户可以开始使用 Node.js 和 npm 来开发和运行 JavaScript 应用程序了。请注意,Node.js 的安装和配置过程可能因操作系统和个人需求而有所不同。在进行...

Global site tag (gtag.js) - Google Analytics