google-closure-compiler基本流程示例

时间:2019-06-06 12:41:34

标签: javascript node.js npm google-closure-compiler uglifyjs

任何人都可以将一个代码段添加到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
});

2 个答案:

答案 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,()=>{});
});