@webpack_ru
Webpack — русскоговорящее сообщество

Обсуждения webpack, лоадеров, плагинов и сборок Правила: http://bit.ly/our_etiquette См. также: @rollup_ru, @react_js, @vscode_ru, @macos_ru, @js_ru

974 members

Архив канала @webpack_ru 7 января 2018 г.

12:37:11 ПП
User 217490537
User 246402278
Ребят, осваиваю вебпак и нужна ваша помощь.

const path = require('path');
const webpack = require('webpack');

module.exports = {
    context: path.resolve(__dirname, './src'),
    entry: {
        common: './js/common.js'
    },
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: '[name].bundle.js',
        publicPath: '/dist'
    },
    devServer: {
        contentBase: path.resolve(__dirname, './src')
    },
    plugins: [
      new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        _: 'lodash'
      }),
      new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        minChunks: 2
      })
    ]
};

Цель: выделить jquery(и остальные библиотеки по необходимости) в отдельный бандл.

Что сейчас происходит:

webpack.ProvidePlugin импортирует jquery в модули, которые используют jquery. Эти модули сливаются в общий бандл common.bundle.js. Соответственно, на выходе код Jquery лежит в common.bundle.js.

В этом случае может помочь CommonsChunkPlugin, но только entry всего один - common, поэтому он не работает, поэтому код Jquery так и остается лежать в common.bundle.js.

Есть какой-нибудь путь для достижения поставленной цели? Возможно есть что-то вроде CommonsChunkPlugin, только который ищет многоразовое использование модулей внутри модулей, а не entry?
https://webpack.js.org/plugins/dll-plugin/
02:33:51 ПП
User 297629097
User 246402278
Ребят, осваиваю вебпак и нужна ваша помощь.

const path = require('path');
const webpack = require('webpack');

module.exports = {
    context: path.resolve(__dirname, './src'),
    entry: {
        common: './js/common.js'
    },
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: '[name].bundle.js',
        publicPath: '/dist'
    },
    devServer: {
        contentBase: path.resolve(__dirname, './src')
    },
    plugins: [
      new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        _: 'lodash'
      }),
      new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        minChunks: 2
      })
    ]
};

Цель: выделить jquery(и остальные библиотеки по необходимости) в отдельный бандл.

Что сейчас происходит:

webpack.ProvidePlugin импортирует jquery в модули, которые используют jquery. Эти модули сливаются в общий бандл common.bundle.js. Соответственно, на выходе код Jquery лежит в common.bundle.js.

В этом случае может помочь CommonsChunkPlugin, но только entry всего один - common, поэтому он не работает, поэтому код Jquery так и остается лежать в common.bundle.js.

Есть какой-нибудь путь для достижения поставленной цели? Возможно есть что-то вроде CommonsChunkPlugin, только который ищет многоразовое использование модулей внутри модулей, а не entry?
С помощью DLL это можно сделать, но он нужен немного для другого
В данном случае вполне подойдёт CommonsChunkPlugin, его можно использовать и при одной точке входа. Например из документации (https://webpack.js.org/plugins/commons-chunk-plugin/#src/components/Sidebar/Sidebar.jsx):
new webpack.optimize.CommonsChunkPlugin({
  name: "vendor",
  minChunks: function (module) {
    // this assumes your vendor imports exist in the node_modules directory
    return module.context && module.context.includes("node_modules");
  }
})
02:38:21 ПП
User 246402278
User 297629097
С помощью DLL это можно сделать, но он нужен немного для другого
В данном случае вполне подойдёт CommonsChunkPlugin, его можно использовать и при одной точке входа. Например из документации (https://webpack.js.org/plugins/commons-chunk-plugin/#src/components/Sidebar/Sidebar.jsx):
new webpack.optimize.CommonsChunkPlugin({
  name: "vendor",
  minChunks: function (module) {
    // this assumes your vendor imports exist in the node_modules directory
    return module.context && module.context.includes("node_modules");
  }
})
Спасибо, попробую
07:54:49 ПП
07:55:19 ПП
User 381490009
ребят на винде все стартует на маке нет   помогите замучался
07:55:46 ПП
User 212795634
User 381490009
ребят на винде все стартует на маке нет   помогите замучался
Выпили кросс енв
07:56:34 ПП
User 147771380
User 381490009
ребят на винде все стартует на маке нет   помогите замучался
Не читай
@
Отвечай

Проверь регистры символов в путях