更好的使用 NPM :提示和技巧

栏目: 服务器 · 发布时间: 7年前

内容简介:小编推荐:

更好的使用 NPM :提示和技巧

更好的使用 NPM :提示和技巧

小编推荐: 掘金是一个面向 程序员 的高质量技术社区,从 一线大厂经验分享到前端开发最佳实践,无论是入门还是进阶,来掘金你不会错过前端开发的任何一个技术干货。

昨天在 css88.com 上发布了 NPM 一些有用的提示和技巧 文章,早上收到朋友的消息,推荐了这篇文章,增加了一些经常使用的 NPM 几个技巧。归纳起来就是: save-exact, npm ci, npm audit fix, npx, updtr, NVM_SYMLINK_CURRENT。

可重复的构建

问题:你的本地安装可能或将来与其他同事不同,即使在 CI(持续集成) 服务器上也是如此!

原因:版本范围有问题: "rxjs": "^6.2.2"

解决方案:在安装依赖项时使用 --save-exact 参数,使用 --save-exact 参数,会在 package.json 文件指定安装模块的确切版本,就是说版本号中的 ^ 会消失:

$ npm install --save-exact aDependency
# 简写:
$ npm i -E aDependency

更好的解决方案:总是 exact(确切版本),永远不要使用版本范围:

$ npm config set save-exact true

安装 package(包)

问题:使用 npm install 将尝试解决依赖关系图,可能会安装不同的版本(因为依赖项中声明的范围,即使你使用了 —save-exact 你也不能控制的),然后更新 package-lock.json ,即使你并不想这么做。

解决方案:使用 npm ci 仅读取 package-lock.json ,这么做的好处是:

package-lock.json
$ npm ci

npm ci 命令类似于 npm-install ,但它旨在用于自动化环境,如测试平台,持续集成和部署。通过跳过某些面向用户的功能,它可以比常规的 npm 安装快得多。它也比常规安装更严格,它可以帮助捕获由大多数 npm 用户的增量安装的本地环境引起的错误或不一致。

使用 npm install 和使用的主要区别 npm ci 是:

  • 该项目必须有一个 package-lock.jsonnpm-shrinkwrap.json
  • 如果程序包锁中的依赖项与其中的依赖项不匹配 package.jsonnpm ci 则将退出并显示错误,而不是更新 package(包) 锁。
  • npm ci 只能一次安装整个项目:使用此命令无法添加单个依赖项。
  • 如果 node_modules 已经存在,它将在 npm ci 开始安装之前自动删除。
  • 它永远不会写入 package.json 或任何 package-locks :安装基本上是冻结的。

全局 package(包)

问题:使用全局包,比如 nest-cli,create-react-apps(等数百个包) ,会污染全局 node_modules

解决方案: npx 运行包而不安装它(但首先,尝试在 node_modules 中本地查找它)

#给 cleaver 传递参数的示例
$ npx cutver watch index.md

npx 命令(npm v5.2.0+ 可用),引入这个命令的目的是为了提升开发者使用包内提供的命令行 工具 的体验。

举个例子:使用 create-react-app 创建一个 react 项目。

老方法:

npm install -g create-react-app
create-react-app my-app

npx方式:

npx create-react-app my-app

这条命令会临时安装 create-react-app 包,命令完成后 create-react-app 会删掉,不会出现在 global 中。下次再执行,还是会重新临时安装。

安全性

问题:查找具有安全漏洞的 package(包)。

解决方案:使用内置的 npm auditnpm audit fix

如果 package(包) 存在安全漏洞,那么在 CI 中集成时会失败 。

另一个解决方案是使用Github和Gitlab的内置服务。

$ npm audit fix

更新 package(包)

问题:更新依赖项并找到破坏代码的依赖项是单调乏味的。

解决方案1(最佳):使用 updtr 更新一个依赖项,然后运行测试,然后重复

$ npx updtr

解决方案2:使用 npm-check 显示所有可更新 package(包) 的列表

$ npx npm-check -u

更好的使用 NPM :提示和技巧

工具中的当前 Node 版本

问题:配置 Node / Typescript 时,Node path(路径) 与版本有关

更好的使用 NPM :提示和技巧

解决方案:如果使用 NVM 管理 Node.js 的安装,NVM 可以自动管理当前版本 Node 的符号链接。 NVM 会将 ~/.nvm/current 链接到实际的当前版本,例如 ~/.nvm/versions/node/v11.0.0 ,并在更改 Node 版本时重新创建链接(如果使用 NVM auto-use ZSH plugin ,则会自动重新创建)。

# Put this in your .bashrc/.zshrc
$ export NVM_SYMLINK_CURRENT=true

关注 Github 发布

问题:收到有关版本的通知

解决方案1 :(更新:2018.12.02)Github 现在支持观察存储库的版本: 文档

解决方案2:Gitpunch.com 似乎解决了这个问题。 它可以跟随你所有的 Github stars项目和特定项目。

英文原文:http://www.tomsquest.com/blog/2018/10/better-npm-ing/ 在此基础上增加了一些解释。

如果你觉得本文对你有帮助,那就请分享给更多的朋友

关注「前端干货精选」加星星,每天都能获取前端干货

更好的使用 NPM :提示和技巧

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

An Introduction to the Analysis of Algorithms

An Introduction to the Analysis of Algorithms

Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99

This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具