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. 96. Unique Binary Search Trees (Tree; DP)

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  2. maven下拉项目不能同步

    maven下拉项目不能同步,如下图: 解决方法: 对项目右键,team, 选择这里 我选择第一项,有的需要根据情况选择第二项,如果点击完成后,还是不能同步代码,对项目右键,team,disconnec ...

  3. ICG游戏:斐波那契博弈

    描述: 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍: ...

  4. SQLSERVER CROSS APPLY 与 OUTER APPLY 的应用

    日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某一条或多条记 ...

  5. dedecms实例化对象

    1.建表 2.创建实体类 4.tc文件加载该实体类 5.用的时候,引入tc.php文件,并实例化

  6. 自旋构造(更新)c#

    int x; void MultiplyXBy (int factor) { var spinWait = new SpinWait(); while (true) { int snapshot1 = ...

  7. 在MS Test中如何测试private方法

    前言: 在博客开始之前,我们先讨论一下是否应该对private方法做测试,通常有两种观点: private方法应该被测试: private方法不应该被测试: 我们以下面的代码为例子来进行说明: pub ...

  8. HDU 1060 Leftmost Digit (数学log)

    题意:给定一个数n,让你求出n的n次方的第一位数. 析:一看这个n快到int极限了,很明显不能直接做,要转化一下.由于这是指数,我们可以把指数拿下来. 也就是取对数,设ans = n ^ n,两边取以 ...

  9. C# HttpClient 请求转发

    最近在做一个项目,需要用到别人的接口,但是遇到一个问题,这个接口只能在服务器上访问,不支持外网访问,这让人有点头疼,本地开发没有对应的环境,不好调试,写好代码封装好发布到服务器,在进行前期测试太麻烦了 ...

  10. 移动端html5页面导航栏悬浮遮挡内容第一行解决办法

    参考:https://zhidao.baidu.com/question/1608232105428062147.html 1.设置导航栏div属性position:fixed; .nav-fixed ...