Closure Compiler无法编译ES6库

时间:2019-03-31 02:32:10

标签: javascript google-closure-compiler

我正在使用Closure Compiler编写一个相当大的JavaScript库,但是我做了一个较小的模型以用作此问题的示例:

src / main.js

export function main(str) {
    console.log("From main: " + str);
}

命令:

google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in ECMASCRIPT6 --language_out ECMASCRIPT6 --js_module_root src/ --module_resolution node --js src/main.js --js_output_file build/main.min.js

预期结果(大致):

export function main(str){console.log("From main: "+str)}

实际结果:

'use strict';

长话短说,我已经奋斗了几个小时,而且我不知道如何让Closure Compiler尊重ES6的“导出”语句。我已经尝试了很多次谷歌搜索,但是我只能得到“ goog.modules” 的结果,这不是我想要的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

Closure Compiler当前不支持将模块作为输出(任何格式)。

答案 1 :(得分:0)

  

如果仅使用ADVANCED_OPTIMIZATIONS编译以下函数,   Closure编译器产生空输出:

     

功能displayNoteTitle(note){alert(note ['myTitle']); }

     

因为从未在您传递的JavaScript中调用该函数   对于编译器,Closure Compiler假定此代码不是   需要!

Ref

您应该添加一个调用函数的部分

function displayNoteTitle(note) {
  alert(note['myTitle']);
}
displayNoteTitle({'myTitle': 'Flowers'});

或者您可以将其添加到窗口对象

function displayNoteTitle(note) {
  alert(note['myTitle']);
}
// Store the function in a global property referenced by a string:
window['displayNoteTitle'] = displayNoteTitle;

Live example