让知识连接你我
投稿赚钱
当前位置: 首页 > 工具资源 > 更好的使用 NPM :提示和技巧
  • 101
  • 微信分享

    扫一扫,在手机上查看

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

2019.09.05 10:00 235 浏览 举报

npm-tips-tricks-1.jpg

  前天公布了 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 文件特定重新安装模块的确切版本,也就是说版本号中的 ^ 会消失:

  bash 代码:

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

  更好的解决办法:总是 exact(确切版本),终究不要应用版本范围:

  bash 代码:

  $ npm config set save-exact true

  重新安装 package(包)

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

  解决办法:应用 npm ci 仅读取 package-lock.json ,这样做的好处是:

  提升速度(在CI和本地)

  避免污染 package-lock.json

  bash 代码:

  $ 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 中本地查找它)

  bash 代码:

  #给 cleaver 传递参数的示例

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

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

  老方法:

  bash 代码:

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

  npx方式:

  bash 代码:

  npx create-react-app my-app

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

  安全性

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

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

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

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

  bash 代码:

  $ npm audit fix

  更新 package(包)

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

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

  bash 代码:

  $ npx updtr

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

  bash 代码:

  $ npx npm-check -u

npm-check-u.png

  工具中的当前 Node 版本

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

nvm_symlink_current.png

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

  bash 代码:

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

  关注 Github 发布

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

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

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


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐