2017-05-05 320 views
1

我試圖實現以下用例:共享Polyfills在谷歌關閉編譯

  • 我的代碼庫被分成3個JavaScript文件:A,B和C
  • 文件B和C都依賴於文件A(意味着它們例如調用一個聲明的方法)
  • 所有文件都使用ES2015(ES6)代碼

我使用谷歌關閉編譯器將它們transpile到ES5和它們最小化。這正常工作與以下NPM模塊google-closure-compiler的配置:

default: { 
      files: { 
       "A.min.js" : "A.js", 
       "B.min.js" : "B.js", 
       "C.min.js" : "C.js", 
      }, 
      options: { 
       compilation_level: "SIMPLE", 
       language_in: "ES6_STRICT", 
       language_out: "ES5_STRICT" 
      } 
     } 

但我想優化。上面的配置會導致Closure Compiler向所有需要的3個文件注入相同的polyfill(例如,如果A和C使用WeakMap,則A.min和C.min都包含WeakMap的polyfill)。

我的問題是,有沒有辦法強制編譯器只在A中使用通用的polyfill?如果B或C正在使用WeakMap,那麼如果A使用WeakMap,則將polyfill放置到A.如果A沒有使用WeakMap,請像往常一樣將polyfills添加到B和C中?

回答