2015-04-19 2 views
28

Есть ли способ использовать ES6 и модули с PhantomJS?Как использовать ES6 с PhantomJS

Я могу перетащить каждый файл с ES6 на ES5 с помощью Babel, но неудобно поддерживать параллельные деревья (один в ES6 и еще один в ES5) и записывать импорт, требующий модулей ES5. Я ищу более чистое решение.

Я могу удалить весь код импорта и экспорта, объединить модули вместе, перевести результат в один файл, а затем запустить через PhantomJS, но я предпочел бы использовать импорт и экспорт, если это возможно.

Я попытался использовать Browserify с преобразованием babelify, чтобы преобразовать дерево зависимостей ES6 в один файл ES5, но Browserify не может найти модули PhantomJS, такие как webpage. Я пытался игнорируя те модули, поставив в моем package.json:

"browser": { 
    "webpage": false 
} 

но импортирования webpage возвращает пустой объект вместо модуля PhantomJS.

Есть ли чистый способ использования модулей ES6 с PhantomJS?

+0

Когда вы говорите, что браузер не может найти модули PhantomJS, такие как 'webpage', вы имеете в виду, что браузеру приходится пытаться скомпилировать эти модули, когда они вам не нужны, или что вы хотите, чтобы эти модули были скомпилированы, и они игнорируются ? –

+0

Мне нужно «потребовать (« веб-страницу »)', что заставляет Browserify также искать модуль узла, называемый 'webpage'. Он выдает ошибку, которая не может быть найдена. Мне не нужны модули, скомпилированные в. – exupero

ответ

2

Вариант --exclude Browserify делает то, что мне нужно.

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

Это исключает webpage из дерева зависимостей, но оставляет импорт на месте.

+15

Я не знаю, почему это ответили на вопрос. Да, он решает отсутствующие функции ES6 во временном приложении PhantomJS. Однако это не может быть решением, если вы хотите запустить «реальные» функции ES6, не переведя их в первую очередь. – dude

Смежные вопросы