将引用的 TS 文件中发出的 JS 文件输出到单个文件夹中,不带子文件夹

Output emitted JS files from referenced TS files into single folder, without subfolders

我有一个带参考的 TypeScript 文件;引用的文件又具有其他引用。当我 运行 g运行t-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 指定绝对路径,结果相同。

如果我不指定 outDir,引用的 TS 文件中的 JS 将在 TS 文件的位置发出,该位置可能在项目文件夹之外。

使用展平选项应该可以解决问题:

先输出到临时文件夹:

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']
}