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

对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm test ) 和自定义脚本( npm run )。但是,进一步了解一些 npm 的使用技巧可以彻底改变你的日常开发任务。

注: 如果你需要关于初学npm的参考,可以参阅我们的初学者指南。如果你对 npm 和 Yarn 之间的差异感到困扰,可以参阅我们发表的文章:Yarn vs npm:你需要知道的一切

  1. 获取帮助

npm 文档 和 CLI 命令行文档 是非常不错地的学习资料,但需要通过浏览器访问,这并不是很方便。因而可以通过命令行快速获取所有可选项:

npm help

此外,还能获取特定 npm 命令的使用帮助:

npm help <command>

例如:```javascript
npm help install


另一种方式是通过下面的命令:

```javascript
npm <command> -h

  1. npm 命令自动完成

npm 通过bash提供了命令自动完成功能(包括 Bash for Windows 10 ):

npm completion >> ~/.bashrc

//or Z shell

npm completion >> ~/.zshrc

重新加载shell配置文件:

source ~/.bashrc

现在,在终端注入 npm ins ,然后按下 tab 键就会出现 install 了,不会再浪费时间去全部输入了。

3.修复全局模块的权限

当你试图安装全部模块时,类 Linux 系统可能会抛出权限错误,可以在npm命令之前添加 sudo 来执行,但这是一个较危险的选择。一个更高的解决方式是改变 npm 默认的模块安装目录:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

使用适当的文本编辑器将下面的一行添加到 ~/.bashrc 或者 ~/.zshrc 文件中:

export PATH="$HOME/.npm-global/bin:$PATH"

重新加载配置文件(source ~/.bashrc),然后重新安装npm到用户所属路径:

npm install -g npm

这也会更新npm。

4.持续更新npm

你可以通过下面的命令显示npm当前的版本:

npm -v

如果有需要,可以通过下面的命令更新npm:

npm install -g npm

当 Node 的主版本 released 之后,你也可能需要重新构建 C++ 扩展:

npm rebuild

如果你需要管理多个版本的node.js和npm,可以考虑使用 n 或者 nvm。这有一篇关于 nvm 的文章:使用 nvm 安装多版本的Node.js

5.定义默认的 npm init

使用 npm init 初始化一个新的项目,这会提示你关于项目的更多细节,并创建一个 package.json 文件。

如果你厌倦了每次开始一个新的项目都需要重新输入同样的信息,可以使用 -y 标记表示你能接受 package.json 文件的一堆默认值:

npm init -y

或者你可以设置一些语义化的默认值:

npm config set init.author.name <name>
npm config set init.author.email <email>

6.更精准的模块搜索

到目前为止,npm上已经有超过350000个模块了,并且每天还在持续增长。尽管有很多非常棒的模块,但是你还是想避免使用一些不受欢迎的、存在bug的或者无人维护的模块。在 npmjs 和 Github 上搜索npm模块是很实用但这还有一些其它选择:

npms

npms 根据一个基于项目版本、模块下载次数、最新更新日期、提交频率、测试覆盖率、文档、贡献者数量、issues数、star数、forks数和作者在社区的地位的综合测量分数进行模块排名。

npm Discover

npm Discover 定位于快速搜索和其它模块通常一起使用的模块,如 body-parser 通常和Express一起使用。

Packages by PageRank

Packages by PageRank 按照模块的谷歌排名进行搜索和排序。

Curated npm Lists

还一个选择就是利用别人的搜索结果。当需要一个健壮的解决方案时,我经常会参考 sindresorhus 的 Awesome Node.js。

7.管理你的模块

你已经安装了一些模块,看看都有啥:

npm list

(ls、la & ll 可以用作 list 的别名)

该命令会显示所有模块:(安装的)模块,子模块以及子模块的子模块等。可以限制输出的模块层级:

npm list --depth=0

打开一个模块的主页:

npm home <package>

这只有在你的系统能打开浏览器时有用--在服务端的系统上会失败。同样,可以打开一个模块的 Github 仓库:

npm repo <package>

或者它的文档:

npm docs <package>

或者它目前的bugs列表:

npm bugs <package>

npm list 会显示和你已经安装地模块的关联模块---这些没有在 package.json文件中被引用。你可以单独 npm uninstall 每一个模块或者全部移除它们:

npm prune

如果安装模块时你添加了 --production 标记或者 NODE_ENV 被设置成 production,package.json 文件中被指定为 devDependencies 的模块也会被移除。

8.锁定依赖

默认情况下,当用 --save/-S 或者 --save-dev/-D 安装一个模块时,npm 通过脱字符(^)来限定所安装模块的主版本号。例如,当运行 npm update 时, ^1.5.1 允许安装版本号大于 1.5.1 但小于 2.0.0 版本的模块。

波浪号(~)字符是限定模块的次要版本。例如,当运行 npm update 时, ~1.5.1 允许安装版本号大于 1.5.1但小于 1.6.0 版本的模块。可以将需要安装的模块版本前缀默认设置成波浪号(~):

npm config set save-prefix="~"

对于那些偏执的认为任何更新(模块的行为)会破坏系统的人,可以配置npm仅安装精确版本号的模块:

npm config set save-exact true

另一个选择是,可以在项目中使用 shrinkwrap:

npm shrinkwrap

这会生成一个 shrinkwrap.json 文件,该文件包含了你正在使用的模块的指定版本。当运行 npm install时,该文件所指定的模块版本会覆盖 package.json 文件中所指定的版本。

  1. 找出过时的模块

怎么知道一个模块已经更新了呢?我之前的方式是先列举出项目所依赖的模块(npm list --depth=0),然后在 npmjs.com 上找到该模块,手动检查该模块的版本是否已经更新。这非常费时。幸运的是,有一个更简单的方式:

npm outdated

或者 npm outdated -g 来查找全局模块。

你也可以查看一个独立模块的当前版本:

npm list <package>

也可以查看检验当前和历史版本:

npm view <package> versions

npm view 会显示一个独立模块的所有信息,包括它的依赖、关键字、更新日期、贡献者、仓库地址和许可证等。

10.使用开发中的模块

当你正在开发一个模块时,会经常想在其它项目中尝试使用或者在任何一个目录运行它(如果你的应用支持),这时没必要将其发布到 npm,并全局安装---仅需在该模块所在目录使用下面的命令:

npn link

该命令会为模块在全局目录下创建一个符号链接。可以通过下面的命令查看模块引用:

npm list -g --depth=0

或者:

npm outdated -g

现在,就可以从命令行运行模块或者通过 require 在任何项目中引入该模块。

另一个选择是,可以通过文件路径在 package.json 文件中声明对该模块的依赖:

"dependencies": {
  "myproject": "file:../myproject/"
}

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-08-01 22:55:28

提升你的开发效率,10 个 NPM 使用技巧的相关文章

阿里Atlas开源?提升团队移动开发效率

本文讲的是阿里Atlas开源?提升团队移动开发效率[IT168 资讯]继Weex之后,阿里在移动技术领域又有开源大动作. 3月13日,手机淘宝安卓客户端容器化框架Atlas正式宣布开源. Atlas由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发.快速迭代和动态部署,适用于Android 4.x以上系统版本的大小型App开发. Atlas特别适用于大规模团队的协同开发.通过提供组件化.动态性.解耦化的支持,Atlas能够实现每个业务在开发阶段独立编译.独立调试.独立运行,

聊一聊如何提升团队开发效率

又是一年年底了,又到了忙着总结,忙计划的时间了,相信每年的总结计划里,大家都有提高团队开发效率的计划.列了一大堆提升计划和目标.然而,这些计划真的执行了吗?这些目标都完成了吗?   过去的一段时间我一有机会就跟其他开发人员交流,并去试着从开发人员自身的角度去发现一些痛.有的开发人员抱怨限制太多,没有意义的事情太多.有的则痛诉产品一天3变,早上定的事情,没到中午,就要改.确实问题限制太多,束缚了开发人员的手脚. 那么我们如何去发现解决这些实际的问题.从而真正提升团队的开发效率呢? 让我们先回归本元

面对前端六年历史代码,如何接入并应用ES6解放开发效率

很荣幸有机会和大家分享自己在前端工作中的一些经验.更高兴能邀请我的同事颜海镜同我一起做这件事情.其实经验说不上,只是希望能更多的和大家一起交流.学习. 为什么要讲"面对前端六年历史代码,如何接入并应用ES6解放开发效率"这个主题呢?其实相信很多人认为ES6已经不再新鲜.在前端迭代迅速的今天,会不会有些"老生常谈"?我理解并不是这样的,因为很多人其实对ES6的理解主要集中在新特性.语言用法等层面上.这些内容是大部分学习者都能通过共享得到的.但是,对于ES6往往缺少了在

教你用Type Hint提高Python程序开发效率_python

简介 Type Hint(或者叫做PEP-484)提供了一种针对Python程序的类型标注标准. 为什么使用Type Hint?对于动态语言而言,常常出现的情况是当你写了一段代码后,隔段时间你可能忘记这个方法的原型是什么样子的了,你也不清楚具体应该传入什么类型的参数,这样往往需要你去阅读代码才能定义每个类型具体是什么.或者当你使用一个文档并不是特别完全的第三方库,你不知道这个库应该如何使用,这都会很痛苦. 现在,借助Type Hint,你可以实现:      1.实现类型检查,防止运行时出现的类

【译】17个提升iOS开发效率的必用工具

[译]17个提升iOS开发效率的必用工具 2015-11-10 09:44 编辑: suiling 分类:iOS开发 来源:netguru.co 本文由CocoaChina译者@红茶魔术师-大红袍 翻译自netguru.co 原文:17 Must Have Tools to Speed up Development in iOS 作者介绍:Patryk Kaczmarek, iOS开发者 毕业于波兹南工业大学.起初从事工业制造方面的工作,但最终决定转向iOS相关的专业开发.他视工作为乐趣,而不仅

JSF与WEB的完美组合 高度提升开发效率

js|web 与微软Visual Studio.NET程序开发有可视化工具的支持相比,人们在开发基于Java的Web用户界面时仍然需要手工书写大量的标签,同时还要考虑页面状态信息的保存.客户端事件处理等问题,开发难度比较大,效率较低,重用性差.Java Server Faces(JSF)技术正是为了解决这一问题应运而生的,其最引人注目的特性之一是它与标记语言.协议.客户端设备无关.利用JSF提供的可重用.可扩展.基于组件的用户界面框架,在快速开发工具RAD的支持下实现可视化开发.现在JSF技术已

提升开发效率-.NET应用程序开发标准化

标准|程序 通过为你的企业建立一个公共的应用程序结构框架来提高.NET应用程序的开发效率. 作者:Rao Chejarla (印度) 涉及技术:ADO.NET.ASP.NET 开发企业应用程序是个复杂的过程.你可以运用Microsoft .NET技术的许多工具来使这个过程变得更快更容易,但由于.NET的复杂性,选择最直接的方法是很难的.如果没有明确的标准和方针用来开发应用程序,企业中的每个开发小组就可能在安全.数据库访问策略和测试过程上进行重复开发.虽然每个小组都可能在这些领域中开发出有效的方法

Emmet:大幅度提高前端开发效率的工具

文章简介:Emmet把片段这个概念提高到了一个新的层次:你可以设置CSS形式的能够动态被解析的表达式,然后根据你所输入的缩写来得到相应的内容.Emmet是很成熟的并且非常适用于编写HTML/XML 和 CSS 代码的前端开发人员,但也可以用于编程语言. 介绍 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具: 基本上,大多数的文本编辑器都会允许你存储和重用一些代码块,我们称之为"片段".虽然片段能很好地推动你得生产力,但大多数的实现都有这样一个缺点

Asp数据库访问代码自动产生工具-ASPRunner(适用初学者和为了提高开发效率的Developer)

初学|访问|数据|数据库 ASPRunner Professional - Web Developer's Nirvana 开发效率的Developer)-初学者适用什么数位板">ASPrunnerPro是一个数据管理管理管理,在网页中使用它可以很简单的访问和操作数据库.从初中者到经验非常的程序员都可以使用它, ASPRunnerPro 产生ASP(Active Server Pages ),产生的Asp允许用户搜索.编辑.删除和添加数据到Oracle,SQL Server,Ms Acce