将打字稿文件分组到多个outFile中

Mar*_*cks 6 typescript

是否可以将打字稿文件分组到多个outFile中?我仍然希望将我的Typescript捆绑,但不要捆绑到一个JS文件中,我想将我的TS分组到几个JS文件,例如controllers.js,plugins.js.TypeScript项目选项似乎只提供一个outfile选项.

Dot*_*ert 1

不幸的是,这不是默认的 TypeScript 编译器行为。当我尝试模块化 TypeScript 应用程序时,我自己也遇到了这个问题。

我决定用于该问题的解决方案:

  1. 再次开始使用旧的 _references.ts 文件。
  2. 不要使用 TSC 进行捆绑(只需编译为 JavaScript)。
  3. 使用 Gulp 插件/函数解析 _references.ts 文件。我的想法:

var fs = require('fs');

// Consts
var PLUGIN_NAME = 'reference-parser';

// Plugin level function (dealing with files)
function referenceParser(fileName, prefix, filterParentReferences) {
    var references = [];

    var content = fs.readFileSync(fileName, 'utf8');
    content = content.replace(/\/\/\/ <reference path=("|')/g, prefix);
    content = content.replace(/.ts("|')\s*\/>,?/g, '.js');

    function readLines(input) {
        if (input.length === 0)
            return;

        var newLineIndex = input.indexOf('\r\n');
        if (newLineIndex >= 0) {
            var line = input.substring(0, newLineIndex).trim();

            readLine(line);

            if (input.length > (newLineIndex + 2))
                readLines(input.substring(newLineIndex + 2));
        } else {
            readLine(input);
        }
    }

    function readLine(line) {
        if (line && line.length > 0) {
            //console.log('Line: ' + line);

            if (line.startsWith('//')) {
                //console.log('Comment line, ignored.');
            } else if (line.indexOf('_references.ts') >= 0) {
                //console.log('External reference line, ignored.'); // TODO Support this?
            } else if (filterParentReferences && line.startsWith('../')) {
                //console.log('Parent reference, ignored.');
            } else {
                references.push(line);
            }
        }
    }

    readLines(content);
    return references;
}

// Exporting the plugin main function
module.exports = referenceParser;
Run Code Online (Sandbox Code Playgroud)

b. 连接 Gulp 任务中的所有内容:

//...

        // Get module source files by parsing the module's _references.ts file.
        var sourceFiles = referenceParser(sourceRoot + '_references.ts', buildJsRoot, true);
        // console.log(sourceFiles);
        var sourcesStream = gulp
            .src(sourceFiles)
            .pipe(plugins.sourcemaps.init({ loadMaps: true })) // Load TypeScript generated source maps
            .pipe(plugins.concat(module.name + '.Bundle.js'))
            .pipe(plugins.uglify({ mangle: false })) // Minify the resulting bundle
            .pipe(plugins.sourcemaps.write('.')) // Write the (merged) bundle source maps
            .pipe(gulp.dest(destinationRoot));
        moduleGulpStreams.add(sourcesStream); // Add the source stream to the stream merger

//...
Run Code Online (Sandbox Code Playgroud)