0

我有一个带有参考的 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我尝试为具有相同结果的绝对路径指定。

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

4

1 回答 1

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']
}
于 2015-03-12T19:04:04.930 回答