【问题标题】:Fastest way to install types for node packages?为节点包安装类型的最快方法?
【发布时间】:2017-10-11 00:51:39
【问题描述】:

每次我想在我的 Nodejs 项目中使用类型化包时,我必须做两件事:

  • 首先,安装原包。例如:npm install express -S
  • 其次,安装其类型定义包。 npm install @types/express -D

我的问题是当我必须执行两个步骤才能再使用一个包时,我感到很懒惰和有点累。有什么方法可以更快/更智能地做到这一点?

【问题讨论】:

  • 任何类型的重复性工作都可以自动化。让自己成为一个脚本。
  • 哇,我什至不知道是否已经有办法实现这一点,所以我不必花时间重新发明轮子。它怎么值得投反对票?
  • 无法评论否决票,但在 package.json 中声明您的依赖关系没有帮助?
  • 一种方法是让 vscode 支持 TypeScript 的类型获取,就像它们在 JavaScript 中一样。然后使其可配置为在每个项目本地而不是在 vscode 缓存位置安装类型。 :)

标签: node.js typescript npm


【解决方案1】:

Bash 扩展怎么样?

如果您负担得起使用与 Bash 兼容的 shell(例如,您使用的是 Linux/macOS/cygwin),则可以使用 shell 的大括号扩展功能:

npm i -S {,@types/}express

相当于:

npm i -S express @types/express

不过,这个问题在于,它的包和类型都将保存为dependencies,而不是package.json 中的devDependencies。我们可能还想同时安装几个包(和它们的类型)。所以让我们改进我们的命令来解决这个问题:

echo express lodash | xargs -n 1 -I % sh -c 'npm i -S %; npm i -D @types/%'

这将同时安装expresslodash,以及@types。此命令还将@types 包正确放置在devDependencies 中。

我们可以进一步改进这一点,因为现在它会为每个包运行单独的npm,以及它的@types。让我们看看我们还能做些什么:

P='express lodash' eval 'npm i -S $P; npm i -D `echo $P | sed -E "s/[a-z0-9]+/@types\/&/g"`'

这将按预期运行两次npm i

  1. npm i -S express lodash
  2. npm i -D @types/express @types/lodash

这是功能最完整的方法,但在大多数情况下可能过于繁重。

希望这会有所帮助!

【讨论】:

  • 哇,这很有趣,但它似乎比“经典”方式更痛苦。我只是在寻找一种简单的方法,但也许没有。无论如何,感谢您的帮助。
猜你喜欢
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2016-10-15
  • 2016-06-12
  • 1970-01-01
  • 2022-01-08
  • 2016-10-30
相关资源
最近更新 更多