npm模块管理器

一、npm简介

npm有两层含义。一层含义是Node.js的开放式模块登记和管理系统,网址为http://npmjs.org。另一层含义是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块。

npm不需要单独安装。在安装node的时候,会连带一起安装npm。但是,node附带的npm可能不是最新版本,最好用下面的命令,更新到最新版本。

npm采用”语义版本“管理软件包。所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号。

# 将npm更新到最新版本
$ npm install npm@latest -g
$ npm install npm@0.1.1 -g
# 查看npm的版本和配置
$ npm -v
# npm命令列表
$ npm help
# 各个命令的简单用法
$ npm -l
# 配置信息
$ npm config list -l

二、npm info

# 查看每个模块的具体信息
$ npm info underscore
$ npm info underscore description
$ npm info underscore homepage
$ npm info underscore version

三、npm search

# npm仓库搜索某个模块
$ npm search <搜索词>

四、npm list

# 列出当前目录安装的所有模块
$ npm list
# 列出全局安装的所有模块
$ npm -global list
# npm list命令也可以列出单个模块。
$ npm list underscore

五、npm install

1. 模块可以“全局安装”,也可以“本地安装”。

  • “全局安装”指的是将一个模块直接下载到Node的安装目录中,各个项目都可以调用。
  • “本地安装”指的是将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块。
# “本地安装”某个模块
$ npm install <package name>
# npm也支持直接输入github地址
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0
# 使用global参数,可以“全局安装”某个模块
$ sudo npm install -global [package name]

2. install命令可以指定所安装的模块属于哪一种性质的依赖关系,即出现在packages.json文件的哪一项中,可以通过npm init自动生成package.json。

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

npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用production参数,可以只安装dependencies字段的模块。

$ npm install --production
# 或者
$ NODE_ENV=production npm install

六、npm update,npm uninstall

# 升级本地安装的模块
npm update -global [package name]
# 删除本地安装的模块
sudo npm uninstall [package name] -global

七、npm run

npm不经可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用。

"scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
# 列出scripts属性下的所有命令
npm run
# 执行lint脚本
npm run lint

npm run会创建一个shell,执行指定的命令,并将node_modules/.bin加入PATH变量,这意味着本地模块可以直接运行。也就是说,npm run lint直接运行jshint .js即可,而不用./node_modules/.bin/jshint .js。

注意:npm内置了两个命令简写,npm test等同于执行npm run test,npm start等同于执行npm run start。

八、默认脚本

npm在执行某些命令时,会执行一些默认脚本(前提是这些脚本已经设置了)。

  • prepublish:发布一个模块前执行。
  • publish, postpublish:发布一个模块后执行。
  • preinstall:安装一个模块前执行。
  • install, postinstall:安装一个模块后执行。
  • preuninstall, uninstall:卸载一个模块前执行。
  • postuninstall:卸载一个模块后执行。
  • preversion, version:更改模块版本前执行。
  • postversion:更改模块版本后执行。
  • pretest, test, posttest:运行npm test命令时执行。
  • prestop, stop, poststop:运行npm stop命令时执行。

prestart, start, poststart:运行npm start命令时执行。

prerestart, restart, postrestart:运行npm restart命令时执行。如果没有设置restart脚本,则依次执行stop和start脚本。

npm run为每条命令提供了pre和post两个钩子(hook)。以npm run lint为例,执行这条命令之前,npm会先查看有没有定义prelint和postlint两个钩子,如果有的话,就会先执行npm run prelint,然后执行npm run lint,最后执行npm run postlint。

如果执行过程出错,就不会执行排在后面的脚本,即如果prelint脚本执行出错,就不会接着执行lint和postlint脚本。

另外,不能在pre脚本之前再加pre,即preprelint脚本不起作用。

九、内部变量

scripts字段可以使用一些内部变量,主要是package.json的各种字段。

比如,package.json的内容是{“name”:”foo”, “version”:”1.2.5”},那么变量npm_package_name的值是foo,变量npm_package_version的值是1.2.5。

{
  "scripts":{
    "bundle": "mkdir -p build/$npm_package_version/"
  }
}

十、npm publish

(1)设定个人信息

$ npm set init.author.name "ligang"
$ npm set init.author.email "[email protected]"
$ npm set init.author.url "https://github.com/381510688/my-git"

(2)向npm系统申请用户名

$ npm adduser

(3)登录

$ npm login

(4)<非第一次>要发布新版本的时候,更新软件的版本

$ npm version <update_type> -m "<message>"
npm version patch增加一位补丁号(比如 1.1.1 -> 1.1.2)
npm version minor增加一位小版本号(比如 1.1.1 -> 1.2.0)
npm version major增加一位大版本号(比如 1.1.1 -> 2.0.0)。

(5)发布

$ npm publish

[转载请标明出处:http://blog.csdn.net/ligang2585116]

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标明出处:http://blog.csdn.net/ligang2585116!

时间: 2024-08-01 16:31:09

npm模块管理器的相关文章

npm模块管理器入门

什么是 NPM npm 是 Node 官方提供的包管理工具,他已经成了 Node 包的标准发布平台,用于 Node 包的发布.传播.依赖控制.npm 提供了命令行工具,使你可以方便地下载.安装.升级.删除包,也可以让你作为开发者发布并维护包. 为什么要使用 NPM npm 是随同 Node 一起安装的包管理工具,能解决 Node 代码部署上的很多问题,常见的场景有以下几种: 允许用户从 npm 服务器下载别人编写的第三方包到本地使用. 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本

前端模块管理器简介

模块化结构已经成为网站开发的主流. 制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起. 浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签.这样就使得网页体积臃肿,难以维护,还产生大量的HTTP请求,拖慢显示速度,影响用户体验. 为了解决这个问题,前端的模块管理器(package management)应运而生.它可以轻松管理各种JavaScript脚本的依赖关系,自动加载各个模块,使得网页结构清晰合理.不夸张地说,将

nodejs-npm模块管理器

JavaScript 标准参考教程(alpha) 草稿二:Node.js npm模块管理器 GitHub TOP npm模块管理器 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 简介 npm init npm set npm config npm info npm search npm list npm install 基本用法 安装不同版本 避免系统权限 npm update,npm uninstall npm run 参数 scripts脚本命令最佳实践 p

[Web 前端] 使用yarn代替npm作为node.js的模块管理器

cp from : https://www.jianshu.com/p/bfe96f89da0e Fast, reliable, and secure dependency management Yarn是Facebook公司出品的用于管理nodejs包的一款软件,开发过nodejs的同学应该知道,我们一般都使用npm作为我们nodejs项目的模块管理器,但npm有一些历史遗留问题,首先,npm安装速度比较慢,而且当项目中模块数量越来越多时,管理这些模块及其依赖的版本是件令人头疼的事,其次npm

Webpack: 为Web开发而生的模块管理器[转]

Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Sep 2014 对于开发人员而言,好的包管理器可以让工作事半功倍.现在流行的编程语言大多有自己的包管理系统.近年来,Web开发越来越火,其开发工具也随之越来越好用了,而Webpack就是一款专为Web开发设计的包管理器.它能够很好地管理.打包Web开发中所用到的HTML.Javascript.CSS以

我的 React Native 技能树点亮计划 の Javascript 模块管理器 npm

@author ASCE1885的 Github 简书 微博 CSDN 知乎 本文由于潜在的商业目的,不开放全文转载许可,谢谢! npm,全称是 node package manager,顾名思义最开始是作为 Node 的包管理器存在的.不过经过不断的发展和壮大,现在的 npm 早就不再局限于 Node 的范畴,已经成为 Javascript 的包管理器,看看下面的 npm 官网首页介绍就知道了: 本系列教程假设你已经按照 React Native 官方入门指南安装好相关的环境(尤其是 Node

关于 npm 包管理器最常用的内容都在这儿了

Nodejs的诞生,给前端开发世界带来了翻天覆地的变化. 前端工程化,各种工具,以及向后端的能力扩展. 车子离不开轮子,node(前后端)开发离不开npm这个包管理工具,在这总结下常用配套工具: npm nrm nvm npm 安装Nodejs会自带 npm,这个默认的包管理器. 常用的基本命令有 初始化,建立工程(主要体现在生成一个package.json的文件) npm init 安装包 如果是clone一个已有工程,下到本地第一步自然是安装所有的依赖包了. npm install // 简

修改npm包管理器的registry为淘宝镜像(npm.taobao.org)

http://www.cnblogs.com/passby/p/4744364.html?utm_source=tuicool&utm_medium=referral ************************************************** 起因 安装了node,安装了npm之后,官方的源实在是 太慢了! 看了看淘宝的npm镜像, http://npm.taobao.org/ 竟然说让我再下载一个cnpm,要不然就每次都得install的时候,后面加上--regist

在Windows平台上安装Node.js及NPM模块管理

1. 下载Node.js官方Windows版程序:   http://nodejs.org/#download   从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安装文件,另外还有一个.EXE可执行文件.   我选择了.EXE文件.因为.MSI安装文件除了将node.exe复制到C:\Program File (x86)\目录中及修改系统Path之外,没发现还有其他作用.   我使用的版本为0.6.2: http://nodejs.org/dist/v0.