你看一个同事正在编码,其中应用上了一些简写和技巧,不知为何,你不熟悉它并且你的大脑一片混乱,这种场景发生在过去我们每个人身上。

在这篇短文中,我们将会介绍一些非常实用的 npm 技巧。有很多文章中的技巧会比这里覆盖得更广,所以我选择把重点放在与开发者最相关和使用的工作流中。

开始之前一些基础的简写

为了让每个人都对齐进度,特别是新来的同学,一起来快速浏览一遍基础简写,保证没有错过任何细节。

安装包

常规: npm install pkg 简写:npm i pkg

安装包在全局

常规: npm i --global pkg 简写:npm i -g pkg

安装包作为依赖(dependency)

常规: npm i --save pkg 简写:npm i -S pkg

安装包作为开发依赖(devDependency)

常规: npm i --save-dev pkg 简写:npm i -D pkg

其余的简写请阅读 npm 的简写列表

现在开始让我们来做一些有趣的事情吧。

1.初始化一个新的包

我们都知道 npm init,当我们创建一个新的包时,这是我们做的第一件事。

但是,以上的问题是非常烦人的,同时我们会修改它,所以我们为什么不避开它呢?

npm init -y 和 npm init -f 可以很好地解决。

2.运行测试

另一个我们都会用到的命令是 npm test,我们当中大多数人每天都在使用它,可能一天好几次。

假如我告诉,你用减少 40% 的字数做同样的事情那要怎么做呢?我们可以这样做,并且这是一个完胜。

那就是 npm t。

3.列举可运行的脚本

我们拿到了一个新项目,就会考虑如何去开始上手。我们经常会自问这些事情:我该如何运行呢?哪些脚本是可用的呢?

一个方法是打开 package.json 文件并检查 scripts 部分。

我们当然可以做得更好,所以我们可以运行 npm run 并且得到所有可用脚本的列表。

其余的选项可以安装 ntl (npm i -g ntl),然后在项目文件目录下运行 ntl ,这样可以让运行脚本变得非常方便。

4.列举已安装的包

与可用脚本相似,有时我们会问自己:我们拥有哪些依赖包在项目中。

我们可以再一次打开 package.json 文件去检查,但是我们已经知道可以做的更好。

迎接 npm ls --depth 0。

列举全局安装的包,我们可以加上 -g 标志,npm ls -g --depth 0。

5.运行本地安装的可执行文件

我们安装了包在项目中,它附带了一个可执行文件,但是它只能通过 npm 脚本来运行,你想知道为什么或者如何去拿下它吗?

首先来理解为什么 -- 当我们在 terminal 中执行命令时,实际发生的是,它在 PATH 环境变量里列举出所有的路径,去寻找相同名字的可执行文件。安装在本地的包只在本地注册了他们的执行文件,所以他们不会被列在 PATH 环境变量中以至于不会被找到。

这时你可能会问,当我们通过 npm 脚本运行这些可执行文件时是如何正常工作的?问的好!这是因为 npm 用了一些“手法”并且添加了额外的文件夹到 PATH 中,<project-directory>/node_modules/.bin。

你可以通过运行 npm run env | grep "$PATH 看到它,也可以运行 npm run env 来看到所有可用的环境变量,npm 会添加一些有趣的东西。

node_modules/.bin,假如你知道,这恰恰就是本地安装包放置其可执行文件的地方。

在项目目录下,让我们来运行 ./node_modules/.bin/mocha 看看。

很简单对吧?无论何时,你想要运行本地安装的执行文件的话就运行 ./node_modules/.bin/<command>。

6.在网上找到你的包

你可能会在 package.json 文件中看到仓库的入口并且想知道它用来做什么呢?

回答这个问题,只需要简单地运行 npm repo 就可以在浏览器打开并查看了。

还有同样适用的是,npm home 命令对应 homepage 入口。

假如你想在 npmjs.com 打开包的页面,这也有相当棒的简写可以做到,npm docs。

7.在其他脚本之前和之后运行脚本

你可能熟悉诸如预测试之类的脚本,这允许你可以在运行测试脚本之前编写代码。

你可能会惊喜地发现,对于每个脚本可以有 pre 和 post 脚本,包括你自己的脚本。

这在使用 npm 作为构建工具和需要编写许多脚本的项目中会非常有用。

8.检测包的版本

假如你拥有一个包,使用了 semver (语义化版本规范)来控制版本,在发布新版本之前需要做一次版本检测。

其中一个方法是,打开 package.json 文件去手动修改版本,但我们希望不要这样去做。

更简单的方法是运行 npm version 带上 major,minor 或者 patch。

npm技巧的更多相关文章

  1. 提升你的开发效率,10 个 NPM 使用技巧

    对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹(npm init),下载npm模块(npm install),创建测试(npm test) 和自定义脚本(npm run).但是, ...

  2. NPM使用技巧

    如果你是一个JavaScript系的开发者,一定不会陌生NPM,它既是一个平台,也是一个工具.在这个平台上,我们能够使用其他开发者提供的功能代码,当然我们也能将我们自己代码提交到这里分享给世界上的开发 ...

  3. 10个 NPM 使用技巧

    对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm tese ) 和自定义脚本( npm r ...

  4. npm常用技巧

    npm中内置了大量的实用技巧,如何高效的使用它们是一件充满挑战的事情.学会下面11个技巧,将会让你在任何项目中使用npm都会事半功倍. 1.如何打开package的主页 npm home $packa ...

  5. nodejs进阶(1)——npm使用技巧和最佳实践

    nodejs进阶教程,小白绕道!!! npm使用技巧和最佳实践 前提:请确保安装了node.js npm的最佳实践 npm install是最常见的npm cli命令,但是它还有更多能力!接下来你会了 ...

  6. 【NPM】361- 10个 NPM 使用技巧

    点击上方"前端自习课"关注,学习起来~ 对于一个项目,常用的一些npm简单命令包含的功能有: 初始化一个文件夹( npm init ) 下载npm模块( npm install ) ...

  7. 13 个 NPM 快速开发技巧

    摘要: 玩转npm. 作者:前端小智 原文:13 个 npm 快速开发技巧 Fundebug经授权转载,版权归原作者所有. 为了保证的可读性,本文采用意译而非直译. 每天,数以百万计的开发人员使用 n ...

  8. 有关npm rum的3个简洁技巧

    [编者按]本文作者为来自 MongoDB 的 NodeJS 工程师 Valeri Karpov.Valeri 专注于维护常见的 Mongoose ODM,是<Professional Angul ...

  9. npm使用过程中的一些错误解决办法及npm常用命令和技巧

    node,npm在前端开发流程中提供了非常完善的自动化工具链,但是同样由于其复杂性导致有很多奇奇怪怪的问题.本文将记录使用过程中出现的一些问题及其解决方法备案. 国内由于gfw问题,导致很多国外的网站 ...

随机推荐

  1. 洛谷P1330 封锁阳光大学 [图论,染色]

    题目传送门 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  2. 性能测试篇:LoadRunner11 压力测试实例笔记

    最近在学习用loadrunner做web性能测试,简单记录一下一个自学实例流程. 1.录制测试脚本 (1).打开LR11,点击create/edit Script来打开VUgen (2).点击新建 ( ...

  3. jsp页面中获取session中的值

    Jsp中获取Session: session是jsp的内置对象,所以你可以直接写在jsp的 <% session.setAttribute("a", b); //把b放到se ...

  4. Linux命令之useradd

    useradd [选项] LOGIN(登录名) useradd –D useradd –D [选项] 创建一个新用户或更新默认新用户信息.useradd和adduser命令相同,adduser是use ...

  5. Codeforces 285 E. Positions in Permutations

    \(>Codeforces \space 285 E. Positions in Permutations<\) 题目大意 : 定义一个长度为 \(n\) 的排列中第 \(i\) 个元素是 ...

  6. Codeforces 538 F. A Heap of Heaps

    \(>Codeforces \space 538 F. A Heap of Heaps<\) 题目大意 :给出 \(n\) 个点,编号为 \(1 - n\) ,每个点有点权,将这些点构建成 ...

  7. [NOIP模拟赛] seq

    seq 试题分析 介绍一种方法叫做回滚莫队. 回滚莫队是一种只加不删的莫队. 首先处理\(l,r\)都在同一个块内的询问,暴力即可. 然后对于\(l,r\)不同在一个块,我们将左端点挂在其所在的块. ...

  8. BZOJ 1877 [SDOI2009]晨跑(多条不交叉最短路)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1877 [题目大意] 找出最多有几条点不重复的从1到N的路,并且要求在满足这个条件的情况 ...

  9. 【单调队列DP+manacher】BZOJ2565-最长双回文串

    [题目大意] 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串. [思路] 首先普通地求manacher,然后求出以每个位置为左端点和右端 ...

  10. python基础之文件操作,函数

    文件操作 +模式: r+t  w+t  a+t  r+b   w+b  a+b 可读可写,其他功能与人,r,w,a相同 f.seek(offset,whence) 文件指针移动    offest的单 ...