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. jmeter 使用cookie管理器

    1.jmeter.properties  中 将CookieManager.save.cookies 设置为true 2.添加一个cookie管理器,什么都不用填 3.把需要用到的请求放到登录后面.后 ...

  2. Java字符串split分割星号*等特殊字符问题(转)

    Java的split()方法分割字符串比较常用(见[Java]字符串以某特殊字符分割处理 ),但在有的时候,会遇到星号*等正则表达式中的特殊字符而无法分割的问题. 比如某需求,用户输入产品规格:厚*宽 ...

  3. 关于anroid设置webview背景方法探讨(转)

    最近的项目中一直关于webView设置背景色问题在研究,最终找到了解决的方法. 基于我项目的需求,从服务端传过来的是带有标签的文本,如果使用textView会让整个布局显得很乱,里面的<img ...

  4. 简述json模块

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,他的数据结构与Python中的字典一样,键值对来表示数据间的关系,可以包含列表. 在编写 ...

  5. 安装wampserver后,在www文件夹下面写php文件,而在网页里输入localhost而无法打开php文件时解决办法汇总

    wampserver安装后,在www文件夹下面写入xx.PHP文件,然后在网页里输入localhost:xx.PHP. 你可能会遇到如下三种情况: 情形一:网页上显示空白,按F12,出现404的错误. ...

  6. 【转】C中的静态存储区和动态存储区

    一.内存基本构成    可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同.    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个 ...

  7. kubernetes 1.6 RBAC访问控制

    一.简介 之前,Kubernetes中的授权策略主要是ABAC(Attribute-Based Access Control).对于ABAC,Kubernetes在实现上是比较难用的,而且需要Mast ...

  8. jquery.fn.extend() 与 $.jquery 作用及区别

    原文:http://www.cnblogs.com/liu-l/p/3928373.html jQuery.extend()这个方法,主要是用来拓展个全局函数啦,例如$.ajax()这种,要不就是拓展 ...

  9. [翻译]Writing Custom Report Components 编写自定义报表组件

    摘要:简单介绍了如何编写一个FastReport的组件,并且注册到FastReport中使用.   Writing Custom Report Components 编写自定义报表组件 FastRep ...

  10. 结对项目— 词频统计(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...