原文地址: 8 npm Tricks You Can Use to Impress Your Colleagues
作者: Adir Amsalem
译者: weapon-x


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

在这篇短文中,我们将会介绍一些非常实用的 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,当我们创建一个新的包时,这是我们做的第一件事。

 

用8个 npm 技巧打动你的同事npm init 需要填写一系列问题

 

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

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

 

用8个 npm 技巧打动你的同事npm init -y

 

2.运行测试

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

 

用8个 npm 技巧打动你的同事npm test

 

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

那就是 npm t

 

用8个 npm 技巧打动你的同事npm t

 

3.列举可运行的脚本

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

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

 

用8个 npm 技巧打动你的同事package.json

 

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

 

用8个 npm 技巧打动你的同事npm run

 

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

 

用8个 npm 技巧打动你的同事ntl

 

4.列举已安装的包

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

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

迎接 npm ls --depth 0

 

用8个 npm 技巧打动你的同事npm ls --depth 0

 

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

 

用8个 npm 技巧打动你的同事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 看看。

 

用8个 npm 技巧打动你的同事./node_modules/.bin/mocha

 

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

6.在网上找到你的包

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

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

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

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

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

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

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

 

用8个 npm 技巧打动你的同事pre and post script

 

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

8.检测包的版本

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

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

更简单的方法是运行 npm version 带上 majorminor 或者 patch

 

用8个 npm 技巧打动你的同事npm version

 

9.npm link是用来链接全局包的命令,npm link主要是为模块开发者使用的一个命令,设想这样的一个情景:你开发了一个模块a并发布了(npm public),并在项目中引入这个模块,在使用过程中发现了a有bug,你改动了a,于是需要重新npm public,发布完你又要回到自己的项目中用npm update命令来更新模块,如果只是小改动还好,如果是开发初期的频繁更新,那么就很浪费时间,毕竟自己开发的模块在本机还要更新,这个步骤明显很多余。npm link命令就是用来同步模块更新的,一般应用场景如下:

自己开发的包名为appy,放在src/appy文件夹——cd to src/appy——npm link,将会把src/appy这个包复制到npm的全局模块安装文件夹node_modules内,并创建符号链接(symbolic link,应该是一个软链接)——自己的项目放在src/mysite文件夹——cd to src/mysite——npm link appy,那么项目中的appy包就会和src/appy相关联,每次npm publish后,项目文件夹里面的appy包都会随之更新。

有时候这个包并不是你开发的,但是你想contribute这个包时,也可以在自己的项目文件夹中直接用npm link <package>,这个包同样会被安装到全局,并和此项目中的包相关联。

 

10.npm root [-g],打印出node_modules文件夹路径,加个-g可以查看全局包的安装路径,有时候忘了全局包安装路径这个小命令还是蛮有用的。

 

11.npm run <command>用npm run来跑package.json里面script字段内的命令,可以直接打npm run查看有哪些命令

 

12.npm update [-g] [<pkg>...]用来更新包,需要注意的是包更新依然需要符合package.json中的版本号范围,只会在版本号范围内更新最新版本的包。有-g--dev--save参数,没有加具体包名时默认更新所有的包。

 

13.npm docs <pkg> 这个命令可以直接打开包的官方文档网站,一般就是github了,不过打开速度不是很快。

 

 

目前为止,以上就是全部了。

我希望你能学到新的东西和找到一个对日常工作有用的技巧,可以更好的了解 npm 并且有一些新的想法可以更好地运用在工作中。

更好地打动你的同事,最好经常学习新的东西变得更加专业。

如果你知道其他的实用技巧,请在评论中分享~

相关文章:

  • 2021-12-03
  • 2021-05-18
  • 2021-06-25
  • 2021-10-03
  • 2021-05-13
  • 2021-07-27
  • 2021-10-17
猜你喜欢
  • 2021-09-08
  • 2022-03-07
  • 2021-04-13
  • 2022-12-23
  • 2022-02-01
  • 2021-06-15
相关资源
相似解决方案