使同事羡慕不已的8个npm命令

这篇文章会为你揭示一些有用的 npm 技巧,由于篇幅原因不可能涵盖所有,所以我选择了工程师日常相关且有用的作为本篇文章的关注点。

基本简写

为了大家保持一致,特别是新人,首先我们来快速浏览一些基础的简写。

Installing a package:

通常:

npm install pkg

简写:

npm i pkg

Installing a package globally:

通常:

npm i --global pkg

简写:

npm i -g pkg

Installing a package and save it as a dependency:

通常:

npm i --save pkg

简写:

npm i -S pkg

Installing a package and save it as a devDependency:

通常:

npm i --save-dev pkg

简写:

npm i -D pkg

更多的简写请看官网:https://docs.npmjs.com/misc/config#shorthands-and-other-cli-niceties

接下来让我们开启有趣之旅:

1.Initializing a new package

我们都知道 npm init ,是当我们初始化一个package的第一件事。

但是,这些问题很烦人,所以为什么不避免它呢?

使用

npm init -ynpm init -f

来解救!

2.Running tests

另一个我们都会用的命令是 npm test,我们中的大多数人会每天使用,甚至一天几次。

幸运的是,使用 npm t,可以做相同的事!

3.List available scripts

当我们接手一个新项目时,会考虑如何开始手头的工作。我们经常会自问:我们如何运行项目?有哪些脚本命令可以使用?

一种方法是找到package.json文件然后查看里面的 scripts 部分。

当然我们可以做的更优雅一些,可以简单的运行 npm run 来列出所有可使用的脚本命令。

另外还可以安装 ntlnpm i -g ntl),然后在项目文件夹下运行 ntl,同时还支持运行脚本。

4.List installed packages

就像上面一样,有时候我们还会自问项目中都有哪些依赖。

我们同样可以打开package.json文件然后查看,但是我们已经知道我们可以做的更好。

使用 npm ls --depth 0

列出全局安装的包,我们可以使用同样的 -g 的标识, npm ls -g --depth 0

5.Running locally-installed executables

在项目中我们安装了一个附带可执行文件的包,但是只有当我们通过 npm script 运行是才可用,你或许会惊奇为何?或知道如何避免它?

首先,我们来理解一下为何--当我们在控制台运行命令时,实际上是在系统环境变量的 PATH 下列出的所有paths中,寻找同名的可执行文件。这就是为何在任何地方都可执行的原因。本地安装的包是把它们的可执行命令注册在本地的,没有被列在 PATH 中,所以不会被找到。

你或许会问:为何在通过 npm script 就可执行?好问题!当以这种方式运行时,npm 做了一些小技巧就是在我们的 PATH 中增加了额外的目录

<project-directory>/node_modules/.bin。

你可通过运行 npm run env | grep "$PATH"来查看,你同样可运行 npm run env来查看所有环境变量,npm 增加了一些有趣的东西在里面。

我们在项目目录下运行 ./node_modules/.bin/mocha 来实际看看效果

是不是很简单?无论何时你想运行本地安装的可执行文件,只要简单的敲入 ./node_modules/.bin/<command>

6.Find your package on the internet

你或许会在package.json中发现仓库的地址,同时想问此安装包有什么功能? 简单的运行 npm repo就会在浏览器中打开该仓库地址。 同样运行 npm home 命令就会打开 homepage的入口。 如果你想在 npmjs.com 中打开包的页面,有一个贴心的命令: npm docs

7.Run scripts before and after other scripts

你可能对类似 pretest 的脚本属性,它可以帮你在运行 test 脚本之前定义一些代码。 真正会使你惊奇的是,你同样可以在自定义脚本中使用!

当你把 npm 作为你的构建工具或者有许多脚本要执行时,这种功能就会很有用。

8.Bumping package’s version

你有一个包,同时使用 semver 做为你的版本记录标准,在你发布新包之前需要填写新的版本号。 其中一种方法就是你打开 package.json 文件然后改变里面的值,但是我们可以不需要这样做。 另一个简单的方法是运行 npm version 并附带上 majorminor 或者 path

原文发布于微信公众号 - 前端黑板报(FeHeiBanBao)

原文发表时间:2017-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PhpZendo

深入浅出依赖注入

或许您已经在项目中已经使用过「依赖注入」,只不过由于某些原因,致使您对它的印象不是特别深刻。

1031
来自专栏FreeBuf

有趣的安全实验:利用多线程资源竞争技术上传shell

通过多线程资源竞争的手段同时上传两个头像,就可以在Apache+Rails环境下实现远程代码执行。这并不是天方夜谭,同时我相信许多文件上传系统都会有这个漏洞……...

2515
来自专栏云计算教程系列

Linux命令行小贴士

本文内容需要一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费...

2072
来自专栏北京马哥教育

Linux开机启动(bootstrap)

计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的...

1785
来自专栏西枫里博客

删除QQ内置浏览器,不再为误点烦恼。

事情得从好久之前说起,自从上次火绒说QQ推广管家和浏览器有流氓行为。就对QQ内置的浏览器耿耿于怀。今天boke112群主说不喜欢分享的链接被QQ内置浏览器打开。...

2381
来自专栏程序员互动联盟

【专业技术】Linux设备驱动第八篇:高级字符驱动操作之设备存取控制

上一篇中介绍了阻塞IO等的一些用法,本来这一篇准备介绍一下poll/select等的一些高级IO操作,后来想想,在实际工作中开发驱动的时候很少会使用到poll/...

35413
来自专栏北京马哥教育

30分钟zabbix入门——最简单有效的zabbix快速学习法

在公司搭建系统级别的监控,由于ELK对流量监控存在局限——现有的工具只记录了累计的流量,而无法计算每时每刻的流量。所以决定最后用zabbix来对网络做监控和报...

55912
来自专栏FreeBuf

添加Metasploit-payload到已有的Android项目中

*本文原创作者:xiaohuanshu,本文属FreeBuf原创奖励计划,未经许可禁止转载 metasploit在写这篇文章之前,笔者可以说是对java一窍...

2398
来自专栏Crossin的编程教室

把你开发的网站免费发布到互联网上(2)

前几天,我们介绍了通过 PythonAnywhere 在互联网上创建一个站点: 把你开发的网站免费发布到互联网上(1) 本篇是上一篇的延续,来讲一讲如何将已有的...

3679
来自专栏沈唁志

宝塔面板Mysql 5.6版本无法正常启动的解决方法

朋友找我的时候说的是 Mysql 启动不了,看他发的截图是宝塔面板,就要来了面板信息去看了一下

1.8K2

扫码关注云+社区

领取腾讯云代金券