Задать вопрос

Как сделать минифицированную сборку с Webpack и es2015?

Вопроса собственно два:

1. Почему если написать так:
module: {
        loaders: [{
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel',
            query: {
                presets: ['es2015']
            }
        }]
    }

то вылетает ошибка:
"Module build failed: Error: Couldn't find preset "es2015" relative to directory ...."

А если сделать так:
loaders: [{
            test: /\.js$/,
            loader: 'babel-loader'
        }]

плюс добавить файл .babelrc, в котором указать:
{
  "presets": ["es2015"]
}

То все работает?

2. Использую Babel-loader:
module: {
        loaders: [{
            test: /\.js$/,
            loader: 'babel-loader'
        }]
    }

Если после этого поюзать модуль минификации:
if(NODE_ENV === 'prod') {
    module.exports.plugins.push(new webpack.optimize.UglifyJsPlugin({
        compress: {
            warnings: false,
            drop_console: true
        }
    }))
}

То появляется ошибка:
"SyntaxError: Unexpected token: name (Name)..."
Откуда ноги растут понятно, в файле на который указывает ошибка используется Import:
"import Name from '../../../../Name.js';"
Минификация конструкций ES6 Вебпаку не по зубам.
Вот здесь есть "замечательная" рекомендация использовать с Вебпаком ES5.
Получается, сначала каким-нибудь Галпом с Babel компилировать ES6 в ES5, а потом героически собирать это Вебпаком? Не думаю, что такой подход обеспечил бы восхищение коммьюнити. наверняка есть возможность обойтись одним Вебпаком.

UPD
Проблемы оказались взамосвязанными.
Вебпак не преобразует ES6 в ES5. Если же указать loader: 'babel?presets[]=es2015', то появляется ошибка:
Module build failed: Error: Couldn't find preset "es2015" relative to directory
Не может найти модуль, хотя он мирно лежить в node_modules рядом с webpack.config.js
  • Вопрос задан
  • 721 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@f-end Автор вопроса
Нашел причину.
Вебпак ищет папку node_modules в родительских для обрабатываемых файлов директориях.
Если они их не находит, то Babel не отрабатывает и - как следствие - минификатор давится не преобразованным кодом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы