2015-04-19 46 views
28

有沒有辦法在PhantomJS上使用ES6和模塊?如何使用ES6和PhantomJS

我可以使用Babel將每個文件從ES6轉換爲ES5,但維護並行樹(ES6中的一個和ES5中的另一個)並寫入導入以要求ES5模塊很尷尬。我正在尋找更清潔的解決方案。

我可以刪除所有導入和導出代碼,將模塊連接在一起,將結果轉換爲單個文件,然後通過PhantomJS運行,但如果可能的話,我傾向於使用導入和導出。

我嘗試使用Browserify和babelify轉換將ES6依賴關係樹轉換爲單個ES5文件,但Browserify無法找到像webpage這樣的PhantomJS提供的模塊。我試圖把我的package.json忽略這些模塊:

"browser": { 
    "webpage": false 
} 

但進口webpage返回一個空的對象,而不是PhantomJS模塊。

有沒有一個乾淨的方式來使用PhantomJS ES6模塊?

+0

當你說browserify找不到PhantomJS提供的模塊,如'webpage',你的意思是browserify試圖編譯時,你不希望他們的模塊,或者要在編譯的模塊,它們被忽略? –

+0

我需要'require('網頁')',這會導致Browserify也尋找名爲'webpage'的節點模塊。它會拋出一個無法找到的錯誤。我並不需要在編譯的模塊。 – exupero

回答

2

Browserify的--exclude選項做我需要的。

browserify --exclude webpage -t babelify script.js --outfile compiled.js 
phantomjs compiled.js 

它排除webpage從依賴關係樹,但離開了進口替代。

+15

我不知道爲什麼會這樣回答了這個問題。是的,它解決了PhantomJS臨時缺失的ES6功能。然而,如果你想運行「真正的」ES6特性而不先開發它們,這不可能是一個解決方案。 – dude