npm config list/ls 显示配置信息
npm config list/ls -l 更详细
npm -h 显示帮助信息,建议多查看
npm -l display full usage info ;-l is --long
npm <cmd> -h 显示某个命令的帮助信息
npm help npm
npm help <term>

npm config set prefix path 修改npm全局安装目录
npm config set cache path 修改npm cache目录
把新的npm路径修改到系统环境变量中,才可生效
npm config set registry='https://registry.npm.taobao.org/' 设置npm资源镜像,加快下载安装速度,还有其他镜像

npm ls 显示工程目录下本地安装的包,--depth=0,显示初级依赖层次
npm -g ls 显示全局安装的包
npm i/install --save xxx 安装包信息将加入到dependencies(生产阶段的依赖)
npm i/install --save-dev xxx 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它
npm i --save-exact xxx 精确安装包版本,package.json里的依赖包的value是具体的版本号,前边没有符号
npm root 查看包的安装路径,及node_modules的路径
npm view modulename 查看模块的package.json信息
npm view moudleName dependencies 查看包的依赖关系
npm view moduleName repository.url 查看包的源文件地址
npm view moduleName engines 查看包所依赖的node版本
npm outdated 检测显示过时的包
npm update 更新包
npm uninstall 卸载包
npm init 在项目中引导创建一个package.json文件

缩写选项:

Shorthands and Other CLI Niceties

The following shorthands are parsed on the command-line:

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long


npm scripts

参考多个网络资源:

npm scripts 是指npm对于package.json文件中"scripts"属性的处理,通过该属性,npm 可以执行命令。

使用不带参数的npm run,显示package.json里所有的script脚本命令及内容。

npm run 会创建一个新的shell,执行指定的命令,并将node_modules/.bin 加入 PATH 变量。当脚本内容结束,则子 shell 关闭,回到父 shell 中。

由于 npm 脚本的唯一要求就是可以在 Shell 执行,因此它不一定是 Node 脚本,任何可执行文件都可以写在里面。
npm 脚本的退出码,也遵守 Shell 脚本规则。如果退出码不是0,npm 就认为这个脚本执行失败。

向npm run xx传入参数必须用--表明

执行顺序:
$npm run xx & npm run xxx同时并行执行
$npm run xx && npm run xxx 前一个执行成功,再执行最后一个


例如:

{
"scripts": {
"lint": "eslint"
}
}

目录终端中,执行npm run-script lint启动lint命令,也可简化为npm run lint;实际是执行了node_modules/.bin/eslint。
项目目录下的node_modules/.bin/目录专门存放安装包的可执行程序。

内置的几个npm 命令

  • start: 执行 npm start
  • test: 执行 npm test
  • stop: 执行 npm stop
  • restart: 执行 npm restart。npm restart是一个复合命令,实际上会依次执行三个脚本命令:stop、restart、start。prerestart>prestop>stop>poststop>restart>prestart>start>poststart>postrestart

pre 和 post hooks

双重的pre和post无效,比如prepretest和postposttest是无效的。

{
"scripts":{
'prexxx':,
'xxx':,
'postxxx':,
}
}

执行npm run xxx后,默认执行顺序:npm run prexxx > npm run xxx > npm run postxxx
一些内置的命令如:start ,执行npm start,会默认执行: npm run prestart > npm run start > npm run poststart。详见官网


{
"scripts":{
"build:dev":"xxxx",//npm run build:dev
"build:prod":"xxx"//npm run build:prod
}
}

环境变量

通过npm_package_前缀,npm 脚本可以拿到package.json里面的字段
若package.json中有{"version":xxx,"name":xx},则npm 在scripts中添加环境变量: npm_package_name 和 npm_package_version。
在*.js文件中可以使用process.env.npm_package_xxx引入
还可自定义变量:
config 字段也可以用于设置内部字段

{
"config": {
"port": 1111
}
//则scripts中可以引入
"scripts":{//bash脚本
"xxx":"xxx ${npm_package_config_port}/$npm_package_config_port"
}
}

npm_lifecycle_event

npm 正在执行哪个script,npm_lifecycle_event就返回当前正在运行的脚本名称。


为什么使用 npm Scripts 构建项目

参考链接,这里摘抄几点:

Gulp 与 Grunt 的不足

总得来说就是 Gulp 与 Grunt 引入了一层复杂但是多余的抽象层,用来抽象直接的构建命令,比如gulp-uglify和grunt-contrib-uglify用来包装uglifyjs命令。这层抽象所建立的插件生态带来了很多问题:

额外的抽象,带来了额外的学习成本;
插件依赖作者,无论是插件质量、设计合理性、文档、更新及时性等严重依赖作者自身的水平与投入;
为什么 npm scripts 先前使用的人不多?这可能是因为很多人存在对 npm scripts 的误解:
人们认为 npm scripts 需要熟悉命令行技能;
人们认为 npm scripts 不够强大;
人们认为 Gulp 的流(stream)对于快速构建是必须的;
人们认为 npm scripts 不能跨平台;

而真相是:

npm scripts 并不需要熟悉命令行技能,当然熟悉的话更好;
npm scripts 可以完成绝大多数 Grunt 与 Gulp 完成的任务,实在不行还可以写 NodeJS 代码来完成;
因为 npm scripts 在一个 Shell 环境中执行的,而 Shell 天生支持流;
几个常见的命令操作符&&/</>/|是跨平台的,对于一些 Linux/Mac 中的 Shell 命令可以使用 shelljs 来实现跨平台;
而 npm scripts 的不足是由于package.json文件不可以写注释,对于复杂的构建任务,代码可读性很差。这个可以尽量通过贴切的命名,任务细分来减轻。另外就是需要熟悉各构建工具的命令行使用方式。

npm 常用配置的更多相关文章

  1. nodejs npm 常用配置

    npm install moduleNames : 安装 Node 模块.node安装分为全局模式和本地模式. npm install -g moduleName.npm install expres ...

  2. 【原】npm 常用命令详解

    今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...

  3. npm常用命令解析

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...

  4. npm 常用命令详解[转]

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...

  5. npm常用命令详解

    ~~~https://www.npmjs.org/有比较全的api文档 NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的 ...

  6. npm 常用命令详解

    本文以Windows平台上做测试,以gulp为示例做教程,出自作者白树,转载请声明出处! 目录 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm updat ...

  7. npm常用命令整理

    npm是一个NodeJS包管理跟分发工具,已经成为了非官方的发布node模块(包)的标准.它可以帮助我们解决代码部署上的一些问题,将开发者从繁琐的包管理工作中(版本.依赖等)解放出来,更加专注于功能上 ...

  8. AngularJS 1.x系列:Node.js安装及npm常用命令(1)

    1. Node.js安装 1.1 Node.js下载 Node.js官网:https://nodejs.org 当前下载版本(含npm):Latest LTS Version: v6.10.3 (in ...

  9. npm常用命令学习(npm install -D,semver版本规范, npm进行版本管理的最佳实践用法)

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

随机推荐

  1. 12. Integer to Roman (HashTable)

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  2. 25.Reverse Nodes in k-Group (List)

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...

  3. OGNL特殊符号的使用

    ---------------------siwuxie095 # 的使用 1.使用 # 获取 context 中的数据 「值栈分为 root 和 context 两部分」 2.如:向 Request ...

  4. C语言字符编码处理

    一.字符编码识别 1.简介 uchardet是一个开源的用于文本编码检测的C语言库,其功能模块是用C++实现的,通过一定数量的字符样本独立的分析出文本的编码,当前已经支持UTF-8/GB13080/B ...

  5. post传参

    1.form表单 2.数据流

  6. Pwdump v7.1

    提取windows系统密码  和 hash值

  7. 有些标签的class有多个值,用空格隔开的,是什么意思阿?

    这个div同时应用了三个class.三个class的设置都会对它起作用,相互冲突时,越后面的class优先权越高.

  8. 数据挖掘分类算法之决策树(zz)

    决策树(Decision tree) 决策树是以实例为基础的归纳学习算法.     它从一组无次序.无规则的元组中推理出决策树表示形式的分类规则.它采用自顶向下的递归方式,在决策树的内部结点进行属性值 ...

  9. 动态列 Excel 导出

    /// <summary> /// 导出数据通用属性 需在属性进行标记 /// </summary> [AttributeUsage(AttributeTargets.Clas ...

  10. (广搜)聪明的打字员 -- POJ --1184

    链接: http://poj.org/problem?id=1184 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#probl ...