如何用`tsc`和`npm install`解决Chicken/Egg情况?

Ale*_*lls 11 node.js npm typescript tsc npm-install

所以我有标准的文件夹结构

dist/
src/
Run Code Online (Sandbox Code Playgroud)

src我的.ts文件在哪里,dist我的.js文件.(我"outDir":"dist"在我的tsconfig.json文件中,并"includes"设置为'src').

请注意 'dist'在我的gitignore文件中,因此它不在版本控制中,因此当它转到Travis时CircleCI,在dist我运行之前,文件夹中没有任何内容tsc.

这是问题 - 如果我npm install先运行- 它会失败,因为我在package.json中有这个:

"bin":{
  "foo" :"dist/cli.js"   // dist/cli.js does not exist yet
}
Run Code Online (Sandbox Code Playgroud)

但如果我tsc先运行- 那么tsc将会缺少编译所需的依赖项,如果我运行则会到达npm install.

只有我能想到的解决这件事情,是安装所有必要的tsc第一个相关性,然后运行TSC,然后运行npm install --production.

然而,这不是最方便的事情.

有没有人遇到这个问题并找到了一个很好的解决方案?

Som*_*Tim 4

我不记得有过这个问题,但至少在一种情况下我做了一些可以解决这个问题的事情。

我将一个 index.js 放在运行 dist 中实际依赖项的根文件夹中。那么 npm 寻找的 bin 就是一个存在的文件,它不应该被吓坏。

当然,在 tsc 运行之前它不会起作用。但它应该可以解决你先有鸡还是先有蛋的问题。