使用 npm run 时是不是使用了不同版本的 tsc?

Posted

技术标签:

【中文标题】使用 npm run 时是不是使用了不同版本的 tsc?【英文标题】:Is a different version of tsc used when using npm run?使用 npm run 时是否使用了不同版本的 tsc? 【发布时间】:2018-12-24 17:09:45 【问题描述】:

我有一个 VS Code 和一个使用 Typescript 的 Node.js 项目。在我的 package.json script 块中有一个项目:

"build-ts": "tsc"

如果我在集成终端命令行上运行普通的tsc,编译就可以了。但是如果我调用npm run build-ts,它会检测到一个文件上的语法错误。错误的原因似乎来自较旧的编译器版本。

如果我在命令行上运行tsc -v,它会显示版本 2.9.2。 npm run 是否在某处使用了其他版本的 tsc?

顺便问一下,npm run 是来自包npm-run-script 吗?我运行了npm list,但在本地或全局找不到 npm-run-script。

【问题讨论】:

您是否在本地安装了tsc,在项目的node_modules 文件夹中?好像npm run 先看这里。 就是这样!有一个版本作为开发依赖项。谢谢。 【参考方案1】:

问题已通过评论解决,但我将把这个答案留在这里作为更详细的版本。

    当您执行npm run(或npm run-script)时,它首先查找本地安装的可执行文件。这允许为每个项目使用不同版本的这些可执行文件(例如,如果某些库与 tsc 的新版本不兼容)。因此,如果tsc 被安装为依赖项(或开发依赖项),npm run 将执行它,而不是全局安装的那个。 gulp 和其他 CLI 工具也是如此。

    npm run-script 不是一个包,它是一个内部的npm 命令,就像install 和其他命令一样。您可以通过npm help 进行检查 - 此命令一次显示所有内置命令的列表。

【讨论】:

以上是关于使用 npm run 时是不是使用了不同版本的 tsc?的主要内容,如果未能解决你的问题,请参考以下文章

NPM 模块画布是使用 NODE_MODULE_VERSION 88 针对不同的 Node.js 版本编译的

npm install使用^ dependency而不是完全匹配

vue中Npm run build 根据环境传递参数方法来打包不同域名

vuejs中执行npm run dev出现页面cannot GET/问题

如何修复 laravel 6 中的错误 npm run dev

NPM Run Build 总是构建生产而不是开发