конфигурация webpack 1 для bundle.js

275
12 октября 2017, 13:38

Не понимаю, каким образом сконфигурировать вебпак для своего проекта.

Смотрел многочисленные гайды, но я не понимаю что в конце концов требуется, чтобы просто собрать все файлы js и привести их в один bundle.js.

Я бы привел код наработок - но это бессмысленно, потому что кроме entry и output больше ничего не понял.

Буду благодарен за минимальный конфиг с пояснениями, что зачем и куда, просто чтобы собрать все файлы js в один бандл.

Возможно это 2й вебпак, не уверен, но думаю - всё таки что первый. На всякий случай приведу зависимость:

"dependencies": {
    "webpack": "^3.6.0"
  }
Answer 1

Для первоначального понимания могу посоветовать вот эти видео, довольно просто объясняется - https://monsterlessons.com/project/series/sborshik-modulej-webpack https://monsterlessons.com/project/lessons/webpack-2-ustanovka-i-nastrojka

Для большего понимания, конечно придется почитать документацию. Ну и ниже мой минимальный конфиг, для сборки. Надеюсь это поможет и внесет некую ясность) То что тебе сейчас не потребуется (например, сборка css), можешь просто удалить, или закомментить.

//плагин для сборки css файлов в единый, хотя может собирать и в 
//разные, зависит от задачи, тут подключение, настройка ниже. 
 
const ExtractTextPlugin = require('extract-text-webpack-plugin'); 
 
//теперь экспортируем объект с настройками 
 
module.exports = { 
 
//тут у нас точка входа для js и прочих файлов, например style -  
//это css. Чтобы собрать все в единый файл, тебе нужно подключить 
//все разрозненые js к точке входа, тоесть все твои js файлы 
//должны быть импорированы в index.js 
//webpack позволяет собирать и разные js-файлы, тогда будет вот  
//такая запись: 
/* 
entry: { 
        bundle1: './app/index1', //путь к файлу. 
        bundle2: './app/index2' 
    }, 
*/ 
 
    entry: { 
        bundle: './app/index', //путь к файлу. 
        style: './app/css/style' 
    }, 
 
//это выход 
    output: { 
//куда сохраняем js, сейчас в корневом каталоге 
        path: __dirname, 
//корректное обновление ссылок в файлах при билде 
        publicPath: '/', 
//название файла, можно задать руками, можно генерить по имени 
//точки входа, как сейчас 
        filename: '[name].js' 
    }, 
 
    //если кратко, то это позволяет указать, какие типы файлов 
    //искать в точке входа (less, sass и т.д.) 
    //Важный момент - первый параметр не должен быть пустым! 
    //Как видишь, у меня стоит в нем пробел. 
 
    resolve: { 
        extensions: [' ', '.js', '.css'] 
    }, 
 
//теперь задаем правила нашей сборки 
    module: { 
        rules: [ 
  //пишешь на es6? значит нужен пакет babel, ниже его настройка 
            { 
  //указываем, какой тип файлов нужно искать для сборки 
                test: /\.js$/, 
  //исключая какие папки 
                exclude: [/node_modules/], 
  //использование загрузчиков с пресетами 
  //значит, кроме babel, нужно установить пакет пресетов 
  //babel-preset-es2015 
                use: [{ 
                    loader: 'babel-loader', 
                    options: { presets: ['es2015'] } 
                }] 
            }, 
 
    //тоже самое, только с css, по настройкам там все просто, 
    //посмотри инфу по ExtractTextPlugin и css-loader 
            { 
                test:   /\.css$/, 
                use: ExtractTextPlugin.extract({ 
                        fallback: { loader: 'style-loader' }, 
                        use: { 
                            loader: 'css-loader', 
                            options: { 
                                import: true, 
                                url: true 
                            } 
                        } 
                    }) 
            }, 
             
     //тут настраиваем file-loader, чтобы при сборке все картинки 
  //и шрифты сохранялись в нужные нам папки с правильными ссылками 
            { 
                test:   /\.(svg|ttf|eot|woff|woff2)$/, 
                loader: 'file-loader?name=[name].[ext]&publicPath=&outputPath=../css/fount/' 
            }, 
            { 
                test:   /\.(png|jpg|svg)$/, 
                loader: 'file-loader?name=[name].[ext]&publicPath=&outputPath=../css/img/' 
            } 
        ] 
    }, 
 
//говорим webpack, что подключили внешний плагин, плюс некоторые 
//ручные настройки, которые врядли тебе сейчас понадобятся. 
//В документации все подробно описано. 
    plugins: [ 
        new ExtractTextPlugin({ 
            filename: '[name].css', 
            allChunks: true}) 
    ] 
};

READ ALSO
Как подменить тип исключения из прокси?

Как подменить тип исключения из прокси?

Если прокси перехватывает присваивание и не подтверждает его, то в строгом режиме кидается исключение TypeErrorНо я тут пытаюсь использовать...

284
Как сделать отправку битков с блокчейн (для бота) проблема с input

Как сделать отправку битков с блокчейн (для бота) проблема с input

Хочу написать бота для отправки биткоинов (на js) c сайта блокчейнТам есть форма Когда я ввожу значение оно просто не принимается так как есть...

270
Как отображать data-description в Yandex share для Facebook

Как отображать data-description в Yandex share для Facebook

Как отображать data-description в Yandex share для Facebook не использую мета теги og:description и тдТекст для description у меня динамически меняется

218
Группировка объектов

Группировка объектов

Всем добраесть массив объектов вида

314