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

Node.js 安装节点包类型的最快方法?,node.js,typescript,npm,Node.js,Typescript,Npm,每次我想在我的Nodejs项目中使用类型化包时,我必须做两件事: 首先,安装原始软件包。例如:npm安装快车-S 其次,安装its类型定义包npm安装@types/express-D 我的问题是,当我必须执行两个步骤才能使用更多的软件包时,我感到懒惰和有点累。有什么方法可以更快/更智能地实现这一点吗?Bash扩展如何 如果您有能力使用与Bash兼容的shell(例如,您使用的是Linux/macOS/cygwin),则可以使用shell的大括号扩展功能: npm i -S {,@types/

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

  • 首先,安装原始软件包。例如:
    npm安装快车-S
  • 其次,安装its类型定义包<代码>npm安装@types/express-D

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

Bash扩展如何

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

npm i -S {,@types/}express
这相当于:

npm i -S express @types/express
不过,问题是包和它的打字都将保存为
依赖项
,而不是
package.json
中的
devdependency
。我们还可能希望同时安装几个软件包(以及它们的类型)。因此,让我们改进我们的命令来解释这一点:

echo express lodash | xargs -n 1 -I % sh -c 'npm i -S %; npm i -D @types/%'
这将为它们安装
express
lodash
,以及
@types
。此命令还会将
@types
包正确放置在
devDependencies

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

P='express lodash' eval 'npm i -S $P; npm i -D `echo $P | sed -E "s/[a-z0-9]+/@types\/&/g"`'
这将按预期运行两次npm i

  • npm i-S express lodash
  • npm i-D@types/express@types/lodash
  • 这是最完整的功能实现方式,但在大多数情况下可能过于繁重


    希望这有帮助

    Bash扩展如何

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

    npm i -S {,@types/}express
    
    这相当于:

    npm i -S express @types/express
    
    不过,问题是包和它的打字都将保存为
    依赖项
    ,而不是
    package.json
    中的
    devdependency
    。我们还可能希望同时安装几个软件包(以及它们的类型)。因此,让我们改进我们的命令来解释这一点:

    echo express lodash | xargs -n 1 -I % sh -c 'npm i -S %; npm i -D @types/%'
    
    这将为它们安装
    express
    lodash
    ,以及
    @types
    。此命令还会将
    @types
    包正确放置在
    devDependencies

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

    P='express lodash' eval 'npm i -S $P; npm i -D `echo $P | sed -E "s/[a-z0-9]+/@types\/&/g"`'
    
    这将按预期运行两次npm i

  • npm i-S express lodash
  • npm i-D@types/express@types/lodash
  • 这是最完整的功能实现方式,但在大多数情况下可能过于繁重


    希望这有帮助

    任何类型的重复性工作都可以自动化。让自己成为一个脚本。哇,我甚至不知道是否已经有办法实现这一点,所以我不必花时间重新发明轮子。甚至值得投否决票吗?不能对否决票发表评论,但在
    package.json
    中声明依赖项没有帮助?一种方法是要求vscode像在JavaScript中一样支持TypeScript的类型获取。然后使其可配置为每个项目在本地安装打字,而不是在vscode缓存位置安装。:)任何类型的重复性工作都可以自动化。让自己成为一个脚本。哇,我甚至不知道是否已经有办法实现这一点,所以我不必花时间重新发明轮子。甚至值得投否决票吗?不能对否决票发表评论,但在
    package.json
    中声明依赖项没有帮助?一种方法是要求vscode像在JavaScript中一样支持TypeScript的类型获取。然后使其可配置为每个项目在本地安装打字,而不是在vscode缓存位置安装。:)哦,哇,这很有趣,但似乎比“经典”方式更痛苦。我只是在寻找一个简单的方法,但可能没有。无论如何,谢谢你的帮助。哦,哇,这很有趣,但它似乎比“经典”方式更痛苦。我只是在寻找一个简单的方法,但可能没有。无论如何,谢谢你的帮助。