任何人都可以将一个代码段添加到google-closure-compiler基本过程中,但我尝试通过js代码对此进行尝试失败。 我正在使用npm官方页面上的示例代码段。 当我运行它时,似乎有些事情发生了,但是没有创建输出文件。
我的代码:
const ClosureCompiler = require('google-closure-compiler').jsCompiler;
console.log(ClosureCompiler.CONTRIB_PATH); // absolute path to the contrib folder which contains externs
const closureCompiler = new ClosureCompiler({
compilation_level: 'ADVANCED'
});
const compilerProcess = closureCompiler.run([{
path: './',
src: 'a.js',
sourceMap: null // optional input source map
}], (exitCode, stdOut, stdErr) => {
console.log(stdOut)
//compilation complete
});
答案 0 :(得分:1)
从您已有的内容开始,我仅更改了几件事:
1)src
属性不是路径:在这种情况下,请使用fs.readFileSync读取文件。
2)输出在回调中返回:您需要将其写入磁盘。
文件:
index.js
const ClosureCompiler = require('google-closure-compiler').jsCompiler;
const {writeFile, readFileSync} = require('fs');
const closureCompiler = new ClosureCompiler({
compilation_level: 'ADVANCED'
});
let src = readFileSync('a.js', 'UTF-8');
const compilerProcess = closureCompiler.run([{
path: './',
src: src,
sourceMap: null
}], (exitCode, stdOut, stdErr) => {
stdOut.map((fileResults) => {
writeFile(fileResults.path, fileResults.src, () => {});
});
});
a.js
console.log('hello world!')
compiled.js
console.log("hello world!");
答案 1 :(得分:0)
好吧,因此,如果没有使用'fs'库,显然无法创建文件。
根据“ closure-compiler-js.js”,当“运行”完成时,回调仅注销结果。 https://github.com/google/closure-compiler-npm/blob/master/packages/google-closure-compiler/lib/node/closure-compiler-js.js
这很有趣,因为'closure-compiler-npm'确实使用'fs'来读取文件内容,但是它没有任何'写文件'机制。
甚至在正式的'cli.js'上也使用'fs'库: https://github.com/google/closure-compiler-npm/blob/master/packages/google-closure-compiler/cli.js
const ClosureCompiler = require('google-closure-compiler').jsCompiler;
const { writeFile } = require('fs');
const closureCompiler = new ClosureCompiler({
js:['a.js','a1.js'],
js_output_file: 'out.js'
});
const compilerProcess = closureCompiler.run([{
path: './',
}], (exitCode, stdOut, stdErr) => {
writeFile(stdOut[0].path, stdOut[0].src,()=>{});
});