Мой tsconfig.json не может найти модуль в моем каталоге node_modules, не уверен, что не так - PullRequest
0 голосов
/ 08 июня 2018

У меня следующая иерархия:

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 в каждую папку Task, в этом случае мойПапка 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: не удается найти модуль «момент».

После добавления путей я все еще получаю сообщение об ошибке, что он не может найти модуль «момент», который находится в моей директории node_modules.Кроме того, когда я смотрю на выходной JS, кажется, что он не содержит необходимого кода 'vsts-tasks-lib', возможно, потому, что в нем все еще была ошибка в отношении модуля 'moment'?Не уверен, что я пропустил?

1 Ответ

0 голосов
/ 11 июня 2018

Использование webpack для компиляции модулей JavaScript, простой пример:

webpack.config.js:

const path = require('path');

module.exports = {
    entry: './testtask.ts',
    module: {
        rules: [
          {
              test: /\.tsx?$/,
              use: 'ts-loader',
              exclude: /node_modules/
          }
        ]
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js']
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    },
    node: {
        fs: 'empty'
    },
    target: 'node'
};

После этого есть только bundle.js иtask.json в папке задач.

Обновление: пример кода в testtask.ts:

import tl = require('vsts-task-lib/task');
import fs = require('fs');
console.log('Set variable================');
tl.setVariable('varCode1', 'code1');
tl.setTaskVariable('varTaskCode1', 'taskCode1');
var taskVariables = tl.getVariables();
console.log("variables are:");
for (var taskVariable of taskVariables) {
    console.log(taskVariable.name);
    console.log(taskVariable.value);
}
console.log('##vso[task.setvariable variable=LogCode1;]LogCode1');
console.log('end========================');
console.log('current path is:' + __dirname);
fs.appendFile('TextFile1.txt', 'data to append', function (err) {
    if (err) throw err;
    console.log('Saved!');
});

console.log('configure file path:' + process.env.myconfig);
console.log('configure file path2:' + process.env.myconfig2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...