内容简介:小编推荐:
小编推荐: 掘金是一个面向 程序员 的高质量技术社区,从 一线大厂经验分享到前端开发最佳实践,无论是入门还是进阶,来掘金你不会错过前端开发的任何一个技术干货。
昨天在 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.json
或npm-shrinkwrap.json
。 - 如果程序包锁中的依赖项与其中的依赖项不匹配
package.json
,npm 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 audit
和 npm audit fix
。
如果 package(包) 存在安全漏洞,那么在 CI 中集成时会失败 。
另一个解决方案是使用Github和Gitlab的内置服务。
$ npm audit fix
更新 package(包)
问题:更新依赖项并找到破坏代码的依赖项是单调乏味的。
解决方案1(最佳):使用 updtr
更新一个依赖项,然后运行测试,然后重复
$ npx updtr
解决方案2:使用 npm-check
显示所有可更新 package(包) 的列表
$ npx npm-check -u
工具中的当前 Node 版本
问题:配置 Node / Typescript 时,Node path(路径) 与版本有关
解决方案:如果使用 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 一些有用的提示和技巧
- [译] CSS Animations 的提示与技巧(MDN)
- macOS和HomeBrew的12个终端提示和技巧
- ECMAScript 2015(ES6)有用的提示与技巧
- [译]ES6提示和技巧,使您的代码更清晰,更短,更容易阅读
- Dockerfile实践小提示
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
引爆社群:移动互联网时代的新4C法则(第2版)
唐兴通 / 机械工业出版社 / 69.00元
社群已经被公认为是这个时代的商业新形态,原有的商业逻辑和方法被颠覆,新的基于社群的商业体系和规则亟待构建,今天几乎所有的企业都在为此而努力,都在摸索中前行。 本书提出的“新4C法则”为社群时代的商业践行提供了一套科学的、有效的、闭环的方法论,第1版上市后获得了大量企业和读者的追捧,“新4C法则”在各行各业被大量解读和应用,积累了越来越多的成功案例,被公认为是社群时代通用的方法论。也因此,第1......一起来看看 《引爆社群:移动互联网时代的新4C法则(第2版)》 这本书的介绍吧!