यह एक थोड़ा hacky है लेकिन यह काम करेंगे।
मैं यह बहुत ही बस कल के बारे में सोचा और मैं उनके कोड की जाँच की गई थी। आप अपने sourcecode से bin / typscript.js चेक करते हैं (यह एक बहुत ही बहुत बड़ी फ़ाइल है, कोड के लगभग 21K लाइनों के साथ), आप इसे TypeScript.TypeScriptCompiler बनाता देखेंगे, और फिर आपको लगता है कि इस संकलन का एक तरीका बेनकाब करता मिलेगा ।
var compiler = new TypeScript.TypeScriptCompiler(outfile, errorfile,
new TypeScript.NullLogger(), settings);
अब, आप इसे बेनकाब करने के लिए एक आसान तरीका की जरूरत है। ऐसा करने के लिए, आप अपने कोड है, जिसके कारण इस hacky है को संशोधित करना होगा। ऐसा करने के लिए, आप जोड़कर typescript.js को संशोधित कर सकते हैं:
module.exports = exports = TypeScript;
सही फ़ाइल के अंत में।
जो वस्तु को उजागर करता है, उसके बाद, आप मॉड्यूल की जड़ में एक index.js फ़ाइल बना सकते हैं ( "NPM टाइपप्रति स्थापित" नोटिस: इस सब के लिए एक स्थानीय दायरे में मॉड्यूल स्थापित)।
exports.TypeScript = require("bin/typescript");
और त्यार! अब आप बस इसे कहते हैं और इसे का उपयोग कर अपने कोड संकलन कर सकते हैं। आप देख सकते हैं कि कैसे tsc.js फ़ाइल में संकलन के लिए एपीआई का उपयोग करने।
मैं भयानक कोड आगे के लिए पहले से माफी माँगता हूँ:
var fs = require("fs");
var TypeScript = require("typescript");
var path = "test.ts";
var pathout = "test.js";
var content = fs.readFileSync(path, "utf-8");
var fd = fs.openSync(pathout, 'w');
var outFile = {
Write: function (str) {
fs.writeSync(fd, str);
},
WriteLine: function (str) {
console.log(fd, str);
fs.writeSync(fd, str + '\r\n');
},
Close: function () {
fs.closeSync(fd);
fd = null;
}
};
var createFile = function (path) {
function mkdirRecursiveSync(path) {
var stats = fs.statSync(path);
if(stats.isFile()) {
throw "\"" + path + "\" exists but isn't a directory.";
} else {
if(stats.isDirectory()) {
return;
} else {
mkdirRecursiveSync(_path.dirname(path));
fs.mkdirSync(path, 509);
}
}
}
mkdirRecursiveSync(_path.dirname(path));
console.log(path)
var fd = fs.openSync(path, 'w');
return {
Write: function (str) {
fs.writeSync(fd, str);
},
WriteLine: function (str) {
fs.writeSync(fd, str + '\r\n');
},
Close: function () {
fs.closeSync(fd);
fd = null;
}
};
};
var stderr = {
Write: function (str) {
process.stderr.write(str);
},
WriteLine: function (str) {
process.stderr.write(str + '\n');
},
Close: function () {
}
}
var compiler = new TypeScript.TypeScriptCompiler(outFile, outFile);
compiler.setErrorOutput(stderr);
compiler.addUnit(content, path);
compiler.typeCheck();
compiler.emit(false, createFile);
outFile.Close();
किसी कारण जो कोई भी कोड लिखा था सी # की एक असली प्रशंसक था और आगे जाना है के लिए रवाना हुए और उपयोग के तरीकों WriteLine, बंद और लिखें, जो वास्तव में सिर्फ रैपर हैं कहा जाता है। आप इस कार्यों को जोड़ने में होने की भूमि के ऊपर के इस मिल सकता है, लेकिन आप मॉड्यूल में कोड का एक बहुत कुछ को संशोधित करने के लिए होता है और यह इसके लायक नहीं है। मुझे लगता है कि यह एक वर्ग का विस्तार करने के लिए सबसे अच्छा है (या यदि आप जे एस पर अभी भी कर रहे हैं, प्रोटोटाइप के वारिस) और यह करना है कि आप के लिए, यह सूखी बनाने के लिए करते हैं।
कुछ वास्तव में अच्छा है कि अगर आप 500 टाइपप्रति फ़ाइलों का अनुवाद और उन सब एक एकल .js फ़ाइल में रखना चाहते हैं, तो आप सिर्फ compiler.addUnit (anothercontent, anotherpath) कॉल कर सकते हैं है, 500 बार और फिर इसे सभी को देखने के एक एकल फाइल में जाने :)
बेहतर चीजों पर ध्यान केंद्रित: यदि आप tsc.js कोड की जाँच करें, आप एक बैच संकलक वर्ग मिल जाएगा। यदि आप एक निर्माण प्रक्रिया के लिए इस चाहते हैं, यह इस तरह के और मजबूत कुछ का उपयोग करने के लिए बेहतर हो सकता है। यह फ़ाइलें और अधिक देख सकते हैं।
कोड में ब्राउज़ करने के बाद, मुझे लगता है कि मैं सिर्फ विकास दल के लिए एक टिकट जमा करें और उन्हें पूछना एक स्पष्ट एपीआई प्रदान करने के लिए होगा ¬¬
नोट: सभी फ़ाइल यहाँ में पढ़ता है एक तुल्यकालिक तरीके से किया जाता है। इस प्रदर्शन के मामले में बुरा है, बहुत खराब है,। मैं वास्तव में नहीं पता है तुम क्या करने की योजना क्या है, लेकिन मैं और अधिक है कि आप यदि संभव हो तो इस async बनाने के लिए एक रास्ता खोजने की सिफारिश नहीं कर सका।