Closure编译器不编译ES6库

问题描述 投票:0回答:2

我正在使用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”的结果,这不是我想要的。任何帮助,将不胜感激。

javascript google-closure-compiler
2个回答
1
投票

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


0
投票

如果使用ADVANCED_OPTIMIZATIONS只编译下面的函数,Closure Compiler会产生空输出:

function 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

© www.soinside.com 2019 - 2024. All rights reserved.