在 package.json 中配置本地打字稿编译器

Configure local typescript compiler inside package.json

EDIT #1:好像我有一个有效的配置,但是欢迎所有改进它的建议。查看答案:


原始问题

我目前正在尝试设置我的环境,以便使用我的 package.jsondevDependencies 打字稿版本。对此有哪些最佳实践,因此它是 "editor unaware" 并且最好可以用作 npm 脚本,例如:npm run tscompile?

需要说明的是 - 使用 npm install typescript -g 时我可以让一切正常工作 - 但我依赖于全局安装版本,这不是我想要的 - 因为我们想要在一个团队并在升级前为每个成员设置特定的打字稿版本,所以我们都在同一页上。

我目前正在尝试这样设置 - 然而 npm 然后抱怨它无法将 "node_modules" 识别为内部或外部命令...我想我必须这样做也将 tsconfig.json 传递给 tsc,或者至少给它 "working directory" - 但我什至无法从本地下载的 npm 缓存中启动 tsc。

package.json

{
  "name": "tswithnodejsgettingstarted",
  "version": "1.0.0",
  "description": "",
  "main": "app/index.js",
  "scripts": {
    "start": "node app/index.js",
    "tscompile": "node_modules/typescript/tsc"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "typescript": "2.1.6"
  }
}

tsconfig.json

{
    "compileOnSave": true,
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "sourceMap": true,
        "outDir": "app"
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

好吧……好像就这么简单(见下文)。在这里回答它,以供其他寻找答案的人使用。或者请让我知道如果有更好的解决方案

package.json中配置类似"tsc": "tsc"的脚本。然后 运行 npm run tsc 它会使用你在本地安装的 tsc 版本,当然还会发现你的 tsconfig.json。它不使用您的全球版本 - 因为我卸载了那个 - 只是在命令行中输入 tsc 出错了。

例如:

检查 repo* 我玩这个的地方。

package.json

{
  "name": "tscnodejsgettingstarted",
  "version": "1.0.0",
  "description": "",
  "main": "app/index.js",
  "scripts": {
    "start": "npm run tsc && node app/index.js",
    "tsc": "tsc"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "typescript": "2.1.6"
  }
}

*回购:https://github.com/pluralsight-courses/typescript-fundamentals/tree/master/001-GettingStarted

您也可以使用 prestart 脚本。默认情况下,它在启动命令之前运行(请参阅您可以设置的所有默认脚本 here)。

  "scripts": {
    "prestart": "npm run tsc",
    "start": "node app/index.js",
    "tsc": "tsc"
  }