【问题标题】:Automatically use the right version of Node for a package自动为包使用正确版本的 Node
【发布时间】:2021-10-12 06:47:35
【问题描述】:

我知道可以使用 NVM、n 或类似方法在不同版本的 Node 之间切换。

在给定包中运行命令时,是否有一种方便的方法可以自动使用正确版本的 Node? (“正确版本”由engine 标签或类似标签确定)。

例如,我希望能够做到这一点:

cd mypackage-that-needs-node10
npm run serve
# ... node 10 is used
cd ..
cd mypackage-that-needs-node14
npm run serve
# ... node 14 is used

【问题讨论】:

  • “在给定包中运行命令”是什么意思?您为您的应用程序及其使用的所有包运行了一个 nodejs 版本。因此,您为您的应用程序选择可以在通用版本的 nodejs 上运行的包,然后配置您的应用程序以运行该特定的 nodejs 版本。对应用程序中不同模块的单独 API 调用不能使用不同版本的 nodejs。加载到您的应用程序中的所有模块都使用相同版本的 nodejs。请提供您遇到的问题的具体示例。
  • 添加了一些说明。 “在给定的包内”,我的意思是在你的术语中“在给定的应用程序内”。 (我的意思是,在 Node 中,每个应用程序也是一个包......)

标签: node.js npm nvm n


【解决方案1】:

n 支持engine 标签从package.jsonauto 中查找Node.js 版本,其中包括更多来源,例如.node-version 文件。

例如:

$ n install engine
# or run the target version of node
$ n run auto index.js
# or execute a command with that Node.js in path
$ n exec auto npm run serve

【讨论】:

  • 谢谢,这看起来很有帮助。理想情况下,可以通过这种方式运行 npm 命令,但似乎并非如此。
  • 根据更新后的问题添加了使用 npm 运行脚本的示例
【解决方案2】:

一种可能的方法是将 node 本身安装到您的包中,并让npm run 脚本优先使用它而不是 node 的系统版本。见node

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2015-01-08
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多