Вывод испускаемых JS-файлов из указанных TS-файлов в одну папку без подпапок

У меня есть файл TypeScript со ссылкой; указанный файл, в свою очередь, имеет другие ссылки. Когда я запускаю задачу grunt-ts, создается иерархия подпапок, отражающая иерархию ссылок, и каждый соответствующий файл JS записывается в scripts подпапка (очевидно, из значения outDir опция). Как я могу настроить задачу так, чтобы все испускаемые файлы JS оказались в одной подпапке?

Моя конфигурация выглядит так:

grunt.initConfig({
    ts: {
        default: {
            src: ['**/*.ts', "!node_modules/**/*.ts"],
            noImplicitAny: true,
            sourceMap: true,
            target: 'es3',
            fast: 'always',
            outDir: 'scripts'
        }
    }
});

Я попытался указать абсолютный путь для outDir с тем же результатом.

Если я не укажу outDirJS из файлов TS, на которые ссылаются, испускается в расположении файлов TS, которое может находиться за пределами папки проекта.

1 ответ

Решение

Использование опции flatten должно помочь:

Сначала выведите во временную папку:

ts: {
    default: {
        src: ['**/*.ts', "!node_modules/**/*.ts"],
        noImplicitAny: true,
        sourceMap: true,
        target: 'es3',
        fast: 'always',
        outDir: 'scripts-temp'
    }
}

Затем используйте grunt-contrib-copy, чтобы скопировать и сгладить промежуточный вывод в конечный пункт назначения.

copy: {
    default: {
        expand: true,
        cwd: 'scripts-temp/',
        src: '**',
        dest: 'scripts/',
        flatten: true,
        filter: 'isFile',
    },
}

Наконец, используйте grunt-contrib-clean, чтобы удалить временную папку:

clean: {
    default: ['scripts-temp']
}
Другие вопросы по тегам