安装节点包类型的最快方法?

时间:2017-10-10 01:59:17

标签: node.js typescript npm

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

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

我的问题是,当我必须做两个步骤才能再使用一个包时,我感到很懒,有点累。有没有办法更快/更聪明地做到这一点?

1 个答案:

答案 0 :(得分:4)

Bash扩展怎么样?

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

npm i -S {,@types/}express

相当于:

npm i -S express @types/express

但问题是,它的包和包装都会在dependencies中保存为devDependencies,而不是package.json。我们也可能希望同时安装多个包(及其类型)。因此,让我们改进命令来解释:

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
  3. 这是功能最完善的方式,但对于大多数情况来说可能过于繁重。

    希望这有帮助!