Size: a a a

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

2020 April 29

AS

Alexander Sidorov in Webpack — русскоговорящее сообщество
Привет всем, Долго обнавляется webpack в режиме dev, а именно после изменений в scss.
источник

AS

Alexander Sidorov in Webpack — русскоговорящее сообщество
module.exports = {
   context: path.resolve(__dirname, '../src'),

   entry: {
       main: ['./js/index.js', './scss/main.scss'],
   },

   mode: 'development',

   output: {
       filename: 'js/[name].js',
       path: path.resolve(__dirname, '../dist/'),
       publicPath: '/',
   },

   devServer: {
       contentBase: path.resolve(__dirname, '../src'),
       overlay: true,
       watchContentBase: true,
       port: 3000,
   },

   module: {
       rules: [
           {
               test: /\.(sa|sc|c)ss$/,
               use: [
                   {
                       loader: MiniCssExtractPlugin.loader,
                   },
                   {
                       loader: 'css-loader',
                   },
                   {
                       loader: 'postcss-loader',
                       options: {
                           config: {
                               path: path.resolve(__dirname),
                           },
                       },
                   },
                   {
                       loader: 'sass-loader',
                       options: {
                           includePaths: ['./node_modules'],
                       },
                   },
               ],
           },
           {
               test: /\.pug$/,
               loader: 'pug-loader',
           },
           {
               test: /\.svg$/,
               loader: 'svg-url-loader',
           },
           {
               test: /\.(woff(2)?|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/,
               use: [
                   {
                       loader: 'file-loader',
                       options: {
                           name: '[path][name].[ext]',
                           outputPath: './',
                           useRelativePach: true,
                       },
                   },
               ],
           },
           {
               test: /\.js$/,
               exclude: /node_modules/,
               use: [
                   {
                       loader: 'babel-loader',
                       options: {
                           plugins: ['transform-es2015-arrow-functions'],
                       },
                   },
               ],
           },
       ],
   },
   plugins: [
       new MiniCssExtractPlugin({
           filename: 'css/[name].css',
       }),
       ...PAGES.map(
           (page) =>
               new HtmlWebpackPlugin({
                   template: ${PAGES_DIR}/${page},
                   filename: ./${page.replace(/\.pug/, '.html')},
               })
       ),
       new CleanWebpackPlugin({
           cleanAfterEveryBuildPatterns: ['dist'],
       }),
       new OpenBrowserPlugin({ url: 'http://localhost:3000' }),
   ],
};
источник

AS

Alexander Sidorov in Webpack — русскоговорящее сообщество
Подскажите в чем причина.
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
Скорее всего дело в том что webpack проходится по всем node_modules
{
 loader: 'sass-loader',
 options: {
 includePaths: ['./node_modules'],   <--
},
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
Укажи конкретно какой из модулей тебе необходимо инклюдить
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
Иначе он рекурсивно бегает по всем
источник

AS

Alexander Sidorov in Webpack — русскоговорящее сообщество
Спасибо, попробую.👍
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
Alexander Sidorov
module.exports = {
   context: path.resolve(__dirname, '../src'),

   entry: {
       main: ['./js/index.js', './scss/main.scss'],
   },

   mode: 'development',

   output: {
       filename: 'js/[name].js',
       path: path.resolve(__dirname, '../dist/'),
       publicPath: '/',
   },

   devServer: {
       contentBase: path.resolve(__dirname, '../src'),
       overlay: true,
       watchContentBase: true,
       port: 3000,
   },

   module: {
       rules: [
           {
               test: /\.(sa|sc|c)ss$/,
               use: [
                   {
                       loader: MiniCssExtractPlugin.loader,
                   },
                   {
                       loader: 'css-loader',
                   },
                   {
                       loader: 'postcss-loader',
                       options: {
                           config: {
                               path: path.resolve(__dirname),
                           },
                       },
                   },
                   {
                       loader: 'sass-loader',
                       options: {
                           includePaths: ['./node_modules'],
                       },
                   },
               ],
           },
           {
               test: /\.pug$/,
               loader: 'pug-loader',
           },
           {
               test: /\.svg$/,
               loader: 'svg-url-loader',
           },
           {
               test: /\.(woff(2)?|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/,
               use: [
                   {
                       loader: 'file-loader',
                       options: {
                           name: '[path][name].[ext]',
                           outputPath: './',
                           useRelativePach: true,
                       },
                   },
               ],
           },
           {
               test: /\.js$/,
               exclude: /node_modules/,
               use: [
                   {
                       loader: 'babel-loader',
                       options: {
                           plugins: ['transform-es2015-arrow-functions'],
                       },
                   },
               ],
           },
       ],
   },
   plugins: [
       new MiniCssExtractPlugin({
           filename: 'css/[name].css',
       }),
       ...PAGES.map(
           (page) =>
               new HtmlWebpackPlugin({
                   template: ${PAGES_DIR}/${page},
                   filename: ./${page.replace(/\.pug/, '.html')},
               })
       ),
       new CleanWebpackPlugin({
           cleanAfterEveryBuildPatterns: ['dist'],
       }),
       new OpenBrowserPlugin({ url: 'http://localhost:3000' }),
   ],
};
У тебя слишком много лоадеров подключено для дев режима
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
точнее, у тебя настройка для прода
источник

AS

Alexander Sidorov in Webpack — русскоговорящее сообщество
🦜
точнее, у тебя настройка для прода
svg-loader и file-loader перенесу на прод, что-то ещё можно ?
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
🦜
У тебя слишком много лоадеров подключено для дев режима
А каким образом это влияет на сборку SCSS ?
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
Vladimir Fedin
А каким образом это влияет на сборку SCSS ?
это не нужно в деве
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
🦜
это не нужно в деве
А влияет то как?)
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
Нужно/не нужно понятие довольно относительное
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
Vladimir Fedin
А влияет то как?)
с какой проблемой сюда пришел человек?
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
"...после изменений в scss"
источник

VF

Vladimir Fedin in Webpack — русскоговорящее сообщество
Вот мне и интересно узнать как svg-loader и file-loader на это влияют)
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
Vladimir Fedin
"...после изменений в scss"
я и сказал, что много лоадеров для scss
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
Alexander Sidorov
svg-loader и file-loader перенесу на прод, что-то ещё можно ?
https://webpack.js.org/plugins/mini-css-extract-plugin/

Это почитать и заменить в деве MiniCssExtractPlugin.loader на style-loader
источник

🦜

🦜 in Webpack — русскоговорящее сообщество
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
источник