Пример базового процесса google-closure-compiler - PullRequest
0 голосов
/ 06 июня 2019

Может ли кто-нибудь добавить фрагмент к базовому процессу 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 ]

1 голос
/ 06 июня 2019

Основываясь на том, что у вас было, я изменил всего несколько вещей:

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!");
0 голосов
/ 07 июня 2019

Хорошо, поэтому нет никакого способа создать файл без использования библиотеки 'fs'.

в соответствии с "closure-compiler-js.js", когда "run" завершен,обратный вызов только выводит результат.https://github.com/google/closure-compiler-npm/blob/master/packages/google-closure-compiler/lib/node/closure-compiler-js.js

, что забавно, потому что 'closure-compiler-npm' использует 'fs' для чтения содержимого файла, но у него нет механизма 'write-file'.

и даже на официальном «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,()=>{});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...