我正在开发一组 VSTS 扩展。每个扩展都是它自己的小节点项目,有自己的package.json
和自己的node_modules
文件夹。文件夹结构如下:
- MyExtension
- package.json // containing all dev-dependencies
- tslint.json
- Tasks
- tsconfig.json
- Common
- common.ts // containing functioanlity shared across tasks
- package.json // containing all runtime dependencies for all projects
- My1stTask
- package.json // containing all prod-dependencies
- task.ts // containing task implementation
- ...
- ...
- My6thTask
- package.json // containing all prod-dependencies
- task.ts // containing task implementation
VSTS 构建任务的工作方式是它们应该是完全独立的。到目前为止,我已经通过将Common
项目的内容复制到每个任务中,然后运行tsc
将它们全部转换为 JavaScript 来解决这个问题。
这还不错,但需要不断复制 Common 的内容才能进行任何测试。
我尝试使用本地文件引用,在每个任务的 package.json 中添加了一个依赖项file:../common
,这在开发时有效,但这不会导致公共模块在生成扩展后成为任务的一部分。
我的背景不是 Node 开发,而是 C#。我已经搜索了所有内容,但没有找到适用于 vsts-extensions 的解决方案。
npm pack
似乎不起作用,因为扩展程序希望所有文件都在那里。package.json/bundleDependencies
看起来很有希望,但不捆绑本地文件参考。///<reference path="../common/common.ts"/>
很适合编辑,但在构建扩展后仍然无法运行。- 带有 prepend 的项目引用不起作用,构建任务需要 commonjs 模块解析器。系统和 AMD 无法加载模块。Prepend 仅适用于后者。
有没有一种方法可以让我“无缝”地完成这项工作,而不必承担 bower 或 grunt 并简单地让每个 MyXthTask 在其node_modules
文件夹中拥有本地公共模块的副本?