专栏首页Super 前端npm模块管理器

npm模块管理器

npm简介

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

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

npm采用”semver语义版本“管理软件包。所谓语义版本,就是指版本号为X.Y.Z (主版本号.次版本号.修订号)

# 将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仓库搜索某个模块
$ npm search <搜索词>

npm list

# 列出当前目录安装的所有模块
$ npm list

# 列出全局安装的所有模块
$ npm -global list

# npm list命令也可以列出单个模块。
$ npm list underscore

npm install

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

  • “全局安装”指的是将一个模块直接下载到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]

保存依赖关系

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 script

自定义脚本。npm scripts 不是简简单单地执行 shell 语句而已,在执行之前它会将 node_modules/.bin/ 加入到环境变量 PATH 中,所以在 npm scripts 中可以直接使用那些存在于 node_modules/.bin/ 中的可执行文件。

"scripts":{
    "test": "mocha"
}

上述运行npm run test 等同于:./node_modules/.bin/mocha

传入参数

希望给 mocha 传入一些选项,如:

mocha --reporter spec

通过脚本需要如下执行:

npm test -- --reporter spec

或者将选项直接写在 package.json 中:

"scripts":{
    "test": "mocha --reporter spec"
}

环境变量

在执行 npm script 的时候还可以访问到一些特殊的环境变量

  • 通过 process.env.npm_package_xxx 可以获得到 package.json 中的内容。 { "name": "blog", "version": "1.0.0", "description": "个人博客初稿(定版后内容会发布到https://blog.csdn.net/ligang2585116)", "repository": { "type": "git", "url": "git+https://github.com/381510688/Blog.git" } } 通过process.env.npm_package_name 可以获取到 package.jsonname 的值 blog;通过 process.env.npm_package_repository_type 可以拿到值 git
  • 通过process.env.npm_config_xxx 来获取 npm config 中的值。比如,process.env.npm_config_user_email 可以拿到 user.email 的值。 npm run build --report 可以通过 process.env.npm_config_report 来获取是否存在该变量,这一是webpack3调用webpack-bundle-analyzer 机制。更多npm-config信息
  • 还有一个比较特殊的环境变量 process.env.npm_lifecycle_event 在执行不同的 npm script 的时候这个值是不同的,比如执行 npm run build 的时候,这个值为 build,通过判断这个变量,将一个脚本使用在不同的 npm script 中。

默认脚本

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脚本不起作用。

npm publish

设定个人信息

$ npm set init.author.name "ligang"
$ npm set init.author.email "ligang_WEB@163.com"
$ npm set init.author.url "https://github.com/381510688/my-git"

向npm系统申请用户名

$ npm adduser

登录

$ npm login

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

$ 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)。

发布

$ npm publish

npmrc

  • 项目配置文件 (/path/to/my/project/.npmrc)
  • 用户配置文件 (~/.npmrc)
  • 系统配置文件 ($PREFIX/etc/npmrc)
  • 内置配置文件 (/path/to/npm/npmrc)

注释使用 ; 或者 # 更多请参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • package.json

    每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm i...

    奋飛
  • 发布项目到NPM

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛
  • 高性能网站建设指南-前端性能优化(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛
  • npm常用命令

    npm是什么,大家都应该很熟悉了。npm的常用命令很多,为了避免经常到npm官网查找,特将常用的npm命令整理下来。

    IMWeb前端团队
  • Vue自定义弹窗组件(一)npm包管理

    npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 6000...

    RtyXmd
  • 全球最大包管理器npm被GitHub收购,将与GitHub整合,网友:别被微软搞垮

    npm全称Node Package Manager,用JavaScript写成,已有超过10年历史,现在拥有130万个软件包,每月下载量达750亿次。

    量子位
  • NPM常用命令

    版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

    空空云
  • npm常用指令以及使用淘宝镜像cnpm 原

    1.npm常用指令以及使用淘宝镜像cnpm:https://blog.csdn.net/xiaozhi_2016/article/details/6492038...

    晓歌
  • 为npm设置代理

    npm全称为Node Packaged Modules。它是一个用于管理基于node.js编写的package的命令行工具。其本身就是基于node.js写的,这...

    墨文
  • npm 常用配置

    npm config list/ls 显示配置信息 npm config list/ls -l 更详细 npm -h 显示帮助信息,建议多查看 npm -l d...

    windseek

扫码关注云+社区

领取腾讯云代金券