我认为这应该是一个标准问题,但是我找不到任何答案...
我有两个打字稿项目-LibraryA和WebserverB。它们是独立的项目,每个项目都有自己的git信息库。它们也是私人项目-我不希望它们在公共场合公开。
很显然,我想在WebserverB中使用LibraryA。我认为正确的方法是通过npm,因为它管理所有其他库。幸运的是,npm在依赖项中支持git URL,因此我可以将其直接指向LibraryA的存储库。
但是,该存储库不包含已编译的Javascript文件,仅包含TypeScript文件。我该如何进行这项工作?还是在这种情况下正确的方法是什么?
答案 0 :(得分:1)
如果您不想从git存储库中的源安装依赖项,请使用以下其他解决方案:
一种简便的解决方案是通过LibraryA
安装git clone
并进行构建。然后,在WebserverB/
中,您可以执行npm install ../path/to/local/LibraryA
:
- npm install <文件夹>:
在当前项目中将软件包作为符号链接安装在目录中。它的依赖项将在链接之前安装。如果
位于项目的根目录中,则其依赖项可能会像其他类型的依赖项一样被提升到顶级 node_modules 。 (Source: NPM documentation)
您可以在服务器上安装私有npm代理注册表,例如Verdaccio。然后,您将能够发布包含所有编译文件的软件包。
您可以在付费帐户的private repository中发布真实的程序包(也包含编译的文件)。
NPM documentation表示另一种选择:
- npm安装
获取tarball网址,然后安装它。为了区分此选项和其他选项,参数必须以“ http://”或“ https://”开头
然后,发布一个软件包,以new release的形式在您的私有Github存储库中进行构建,压缩和上传。之后,应该可以使用个人访问令牌通过URL访问tarball吗?
答案 1 :(得分:0)
答案 2 :(得分:0)
好的,我将用其他答案的摘要和一些其他选项来回答我自己的问题。
经过一番思考,我意识到了。问题是-谁和何时运行tsc
将LibraryA的Typescript编译为Javascript?基本上只有几种选择:
让我们详细看一下。
然后的问题是-发布结果存储在哪里?它必须位于NPM可以访问的位置。因此,只有少数选择:
尽管有缺点,但它们都是可维修的选择。
这里的主要缺点是,这立即使WebserverB上的打字稿依赖。不仅是开发依赖性,还包括完整的运行时依赖性。可能还可以,但是真的很奇怪。您如何计划部署WebserverB?那也可以运行编译吗?我不认为这是要走的路。但这是可能的。有关详细信息,请参见H.B.
's answer。
好吧,如果您只计划在打字稿项目中使用它,那可能没问题。我不确定是否要安装它。您需要修改tsconfig.json
文件,使其在编译中包含node_modules/LibraryA
。那真是怪了。您的IDE对此会感到高兴吗?总而言之,这也不是一个好主意。感觉就像在打架/滥用系统一样,而且收效甚微。
最后,我想我将采用“提交已编译的JS”方法。因为“ 完全错误”不是一个好参数。而且由于这是一个私人项目,因此额外发布的资源也不是什么大问题。实际上,也许他们甚至会帮助调试。