4
是否可以將打字稿文件分組爲多個outFile?我仍然希望捆綁我的Typescript,但不是將其包含到單個JS文件中,我想將我的TS分組爲幾個JS文件,例如controllers.js,plugins.js。 TypeScript項目選項似乎只提供一個outfile選項。組打字稿文件分成多個outFile
是否可以將打字稿文件分組爲多個outFile?我仍然希望捆綁我的Typescript,但不是將其包含到單個JS文件中,我想將我的TS分組爲幾個JS文件,例如controllers.js,plugins.js。 TypeScript項目選項似乎只提供一個outfile選項。組打字稿文件分成多個outFile
不幸的是,這並不是默認的TypeScript編譯器行爲。當我試圖模擬TypeScript應用程序時,我自己面臨這個問題。
的解決方案,我已經決定利用這個問題:
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;
灣在咕嘟咕嘟任務串連一切:
//...
// 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
//...
感謝您花時間回覆。是的,我一直在考慮不編譯到一個js,然後使用後編譯事件xcopy到各種文件夾,然後批量和縮小。 – MarzSocks
您也許能像咕嘟咕嘟或咕嚕構建工具來做到這一點,但你不能有多個'outFile's除非你有一個不同的'tsconfig'爲每個組 – Quill