我有以下层次结构:
dist/
|- BuildTasks/
|- CustomTask/
- CustomTask.js
node_modules/
source/
|- BuildTasks/
|- CustomTask/
- CustomTask.ts
- tsconfig.json
此外,我正在尝试为内部(私人)使用创建一个 VSTS 任务扩展。最初,我的 tsconfig.json 在我的根目录中,并且在我的本地机器上一切正常。问题是 VSTS 扩展要求所有文件都包含在与任务文件夹本身相同的目录中。有关详细信息,请参阅https://github.com/Microsoft/vsts-task-lib/issues/274:
您需要发布一个自包含的任务文件夹。代理不会运行 npm install 来恢复您的依赖项。
最初,我通过包含一个将整个 node_modules 目录复制到每个任务文件夹中的步骤解决了这个问题,在这种情况下,我的CustomTask文件夹包含我的 JS 文件。但是,考虑到并非我正在编写的每个任务都具有相同的模块要求,这似乎有点过分。
我的想法是在每个任务文件夹中创建一个 tsconfig.json 来指定创建一个包含所有依赖模块的单个输出文件,但不幸的是它不起作用:
{
"compilerOptions": {
"baseUrl": ".",
"target": "ES6",
"module": "system",
"strict": true,
"rootDir": ".",
"outFile": "../../../dist/BuildTasks/CustomTask/CustomTask.js",
"paths": {
"*" : ["../../../node_modules/*"]
}
}
}
在添加“路径”之前,我收到以下错误:
错误 TS2307:找不到模块“vsts-task-lib/task”。
错误 TS2307:找不到模块“时刻”。
添加路径后,我仍然得到它找不到模块“moment”的错误,它位于我的 node_modules 目录中。另外,当我查看输出 JS 时,它似乎没有包含必要的“vsts-tasks-lib”代码,可能是因为它在“moment”模块方面仍然存在错误?不确定我错过了什么?