如何从本地目录而不是全局目录运行 TypeScript

Posted

技术标签:

【中文标题】如何从本地目录而不是全局目录运行 TypeScript【英文标题】:How to run TypeScript from local directory instead of global 【发布时间】:2019-10-27 04:25:04 【问题描述】:

所以我有多个项目,每个项目都使用 diff 类型的 TypeScript,所以我从全局卸载并将它放在我的项目本地,但是当我运行 tsc 时出现以下错误:

$ tsc --版本 内部/模块/cjs/loader.js:583 抛出错误; ^ 错误:找不到模块 'C:\Program Files\nodejs\node_modules\typescript\bin\tsc' 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15) 在 Function.Module._load (internal/modules/cjs/loader.js:507:25) 在 Function.Module.runMain (internal/modules/cjs/loader.js:742:12) 启动时(内部/bootstrap/node.js:283:19) 在 bootstrapNodeJSCore (内部/bootstrap/node.js:743:3) root@DESKTOP-N8OLDFM /cygdrive/c/msweb/studiolite $

我确实在我的 PATH 中添加了以下内容:

/cygdrive/C/msweb/studiolite/node_modules/typescript/bin

有什么想法吗?

【问题讨论】:

使用你的包管理器(Npm、Yarn 或任何你用来管理项目包的东西)运行tsc。它会启动当前项目中安装的tsc 实例并忽略全局安装的实例(即您甚至不需要卸载它)。 @apokryfos - 我会将其发布为答案,而不是评论。 不幸的是,我必须运行 tsc 而不是 npx,因为我也在使用 WebStorm,所以我需要 Windows 中的所有内容来获取本地 tsc.exe @born2net - WebStorm 不能使用 npx 或为你处理这个?这似乎令人惊讶。 应该有一个选项来指定 typescript 在 webstorm 中的位置。 phpStorm 中有一个,我认为这两个共享一个核心。只需尝试搜索选项 【参考方案1】:

您可以使用npx 运行本地安装的可执行文件

例子:

npx tsc --version

如果您选择的包管理器是 yarn,那么执行 yarn tsc --version 也应该有效,但前提是您的 package.json 中没有名为 tsc 的脚本。

【讨论】:

感谢您的回答,这可能适用于命令行,但我还需要 WebStorm 来拾取 ./node_modules tsc .. 有没有办法告诉 env 中的所有内容来拾取 tsc具体路径? @born2net - 我想你可能想把它作为一个单独的、特定于 WebStorm 的问题来问。您提出的问题没有提到 WebStorm(并且 确实 显示了命令行示例),因此吸引了通用的命令行答案。一旦有了答案,就不适合更改问题。【参考方案2】:

您可以在package.json 中向scripts 添加一个条目,不仅可以运行tsc,还可以填写您想要的标准参数,例如:

"scripts": 
  "tsc": "tsc your args here"
,

然后使用

npm 运行 tsc

这将运行来自node_modules 的那个,而不是全局的。

有关临时命令,请参阅apokryfos's npx answer。

【讨论】:

以上是关于如何从本地目录而不是全局目录运行 TypeScript的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让Windows 7 x64从本地目录加载ntdll.dll,而不是system32?

Maven:如何将本地 lib 目录用于依赖项而不是 Maven 存储库

Git 从全局设置中获取用户名而不是本地设置

如何制作 - 自动完成搜索全局而不是本地

如何让 Grunt Deploy 使用全局 NPM 模块而不是本地模块

如何使用全局/通用 node_modules 而不是本地 node_modules?