diff --git a/build-config/css-loader.config.js b/build-config/css-loader.config.js index b6cb4288..9f2aa3d4 100644 --- a/build-config/css-loader.config.js +++ b/build-config/css-loader.config.js @@ -3,6 +3,6 @@ const isDev = process.env.NODE_ENV === 'development' module.exports = { modules: { localIdentName: isDev ? '[folder]-[name]--[local]--[hash:base64:5]' : '[hash:base64:5]', + exportLocalsConvention: 'camelCase', }, - localsConvention: 'camelCase', } diff --git a/build-config/renderer-lyric/webpack.config.base.js b/build-config/renderer-lyric/webpack.config.base.js index a74a2606..ed08fd5e 100644 --- a/build-config/renderer-lyric/webpack.config.base.js +++ b/build-config/renderer-lyric/webpack.config.base.js @@ -1,9 +1,12 @@ const path = require('path') const VueLoaderPlugin = require('vue-loader/lib/plugin') const HTMLPlugin = require('html-webpack-plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') const vueLoaderConfig = require('../vue-loader.config') +const { mergeCSSLoader } = require('../utils') +const isDev = process.env.NODE_ENV === 'development' module.exports = { target: 'electron-renderer', @@ -46,6 +49,28 @@ module.exports = { loader: 'babel-loader', exclude: /node_modules/, }, + { + test: /\.css$/, + oneOf: mergeCSSLoader(), + }, + { + test: /\.less$/, + oneOf: mergeCSSLoader({ + loader: 'less-loader', + options: { + sourceMap: true, + }, + }), + }, + { + test: /\.styl(:?us)?$/, + oneOf: mergeCSSLoader({ + loader: 'stylus-loader', + options: { + sourceMap: true, + }, + }), + }, { test: /\.pug$/, oneOf: [ @@ -98,5 +123,11 @@ module.exports = { __dirname, }), new VueLoaderPlugin(), + new MiniCssExtractPlugin({ + // Options similar to the same options in webpackOptions.output + // both options are optional + filename: isDev ? '[name].css' : '[name].[contenthash:8].css', + chunkFilename: isDev ? '[id].css' : '[id].[contenthash:8].css', + }), ], } diff --git a/build-config/renderer-lyric/webpack.config.dev.js b/build-config/renderer-lyric/webpack.config.dev.js index 5baf32fa..871afd3e 100644 --- a/build-config/renderer-lyric/webpack.config.dev.js +++ b/build-config/renderer-lyric/webpack.config.dev.js @@ -6,37 +6,9 @@ const { merge } = require('webpack-merge') const baseConfig = require('./webpack.config.base') -const { mergeCSSLoaderDev } = require('../utils') - module.exports = merge(baseConfig, { mode: 'development', devtool: 'eval-source-map', - module: { - rules: [ - { - test: /\.css$/, - oneOf: mergeCSSLoaderDev(), - }, - { - test: /\.less$/, - oneOf: mergeCSSLoaderDev({ - loader: 'less-loader', - options: { - sourceMap: true, - }, - }), - }, - { - test: /\.styl(:?us)?$/, - oneOf: mergeCSSLoaderDev({ - loader: 'stylus-loader', - options: { - sourceMap: true, - }, - }), - }, - ], - }, plugins: [ new webpack.HotModuleReplacementPlugin(), new webpack.NoEmitOnErrorsPlugin(), diff --git a/build-config/renderer-lyric/webpack.config.prod.js b/build-config/renderer-lyric/webpack.config.prod.js index 89986194..e151deac 100644 --- a/build-config/renderer-lyric/webpack.config.prod.js +++ b/build-config/renderer-lyric/webpack.config.prod.js @@ -1,6 +1,5 @@ const path = require('path') const webpack = require('webpack') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin') @@ -8,7 +7,6 @@ const { merge } = require('webpack-merge') const baseConfig = require('./webpack.config.base') -const { mergeCSSLoaderProd } = require('../utils') const { dependencies } = require('../../package.json') let whiteListedModules = ['vue'] @@ -20,32 +18,6 @@ module.exports = merge(baseConfig, { externals: [ ...Object.keys(dependencies || {}).filter(d => !whiteListedModules.includes(d)), ], - module: { - rules: [ - { - test: /\.css$/, - oneOf: mergeCSSLoaderProd(), - }, - { - test: /\.less$/, - oneOf: mergeCSSLoaderProd({ - loader: 'less-loader', - options: { - sourceMap: true, - }, - }), - }, - { - test: /\.styl(:?us)?$/, - oneOf: mergeCSSLoaderProd({ - loader: 'stylus-loader', - options: { - sourceMap: true, - }, - }), - }, - ], - }, plugins: [ new CopyWebpackPlugin({ patterns: [ @@ -60,9 +32,6 @@ module.exports = merge(baseConfig, { NODE_ENV: '"production"', }, }), - new MiniCssExtractPlugin({ - filename: '[name].css', - }), new webpack.NamedChunksPlugin(), ], optimization: { diff --git a/build-config/renderer/webpack.config.base.js b/build-config/renderer/webpack.config.base.js index ea4f652f..fdf69a36 100644 --- a/build-config/renderer/webpack.config.base.js +++ b/build-config/renderer/webpack.config.base.js @@ -1,9 +1,12 @@ const path = require('path') const VueLoaderPlugin = require('vue-loader/lib/plugin') const HTMLPlugin = require('html-webpack-plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') const vueLoaderConfig = require('../vue-loader.config') +const { mergeCSSLoader } = require('../utils') +const isDev = process.env.NODE_ENV === 'development' module.exports = { target: 'electron-renderer', @@ -46,6 +49,28 @@ module.exports = { loader: 'babel-loader', exclude: /node_modules/, }, + { + test: /\.css$/, + oneOf: mergeCSSLoader(), + }, + { + test: /\.less$/, + oneOf: mergeCSSLoader({ + loader: 'less-loader', + options: { + sourceMap: true, + }, + }), + }, + { + test: /\.styl(:?us)?$/, + oneOf: mergeCSSLoader({ + loader: 'stylus-loader', + options: { + sourceMap: true, + }, + }), + }, { test: /\.pug$/, oneOf: [ @@ -98,5 +123,11 @@ module.exports = { __dirname, }), new VueLoaderPlugin(), + new MiniCssExtractPlugin({ + // Options similar to the same options in webpackOptions.output + // both options are optional + filename: isDev ? '[name].css' : '[name].[contenthash:8].css', + chunkFilename: isDev ? '[id].css' : '[id].[contenthash:8].css', + }), ], } diff --git a/build-config/renderer/webpack.config.dev.js b/build-config/renderer/webpack.config.dev.js index 5baf32fa..871afd3e 100644 --- a/build-config/renderer/webpack.config.dev.js +++ b/build-config/renderer/webpack.config.dev.js @@ -6,37 +6,9 @@ const { merge } = require('webpack-merge') const baseConfig = require('./webpack.config.base') -const { mergeCSSLoaderDev } = require('../utils') - module.exports = merge(baseConfig, { mode: 'development', devtool: 'eval-source-map', - module: { - rules: [ - { - test: /\.css$/, - oneOf: mergeCSSLoaderDev(), - }, - { - test: /\.less$/, - oneOf: mergeCSSLoaderDev({ - loader: 'less-loader', - options: { - sourceMap: true, - }, - }), - }, - { - test: /\.styl(:?us)?$/, - oneOf: mergeCSSLoaderDev({ - loader: 'stylus-loader', - options: { - sourceMap: true, - }, - }), - }, - ], - }, plugins: [ new webpack.HotModuleReplacementPlugin(), new webpack.NoEmitOnErrorsPlugin(), diff --git a/build-config/renderer/webpack.config.prod.js b/build-config/renderer/webpack.config.prod.js index 89986194..e151deac 100644 --- a/build-config/renderer/webpack.config.prod.js +++ b/build-config/renderer/webpack.config.prod.js @@ -1,6 +1,5 @@ const path = require('path') const webpack = require('webpack') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin') @@ -8,7 +7,6 @@ const { merge } = require('webpack-merge') const baseConfig = require('./webpack.config.base') -const { mergeCSSLoaderProd } = require('../utils') const { dependencies } = require('../../package.json') let whiteListedModules = ['vue'] @@ -20,32 +18,6 @@ module.exports = merge(baseConfig, { externals: [ ...Object.keys(dependencies || {}).filter(d => !whiteListedModules.includes(d)), ], - module: { - rules: [ - { - test: /\.css$/, - oneOf: mergeCSSLoaderProd(), - }, - { - test: /\.less$/, - oneOf: mergeCSSLoaderProd({ - loader: 'less-loader', - options: { - sourceMap: true, - }, - }), - }, - { - test: /\.styl(:?us)?$/, - oneOf: mergeCSSLoaderProd({ - loader: 'stylus-loader', - options: { - sourceMap: true, - }, - }), - }, - ], - }, plugins: [ new CopyWebpackPlugin({ patterns: [ @@ -60,9 +32,6 @@ module.exports = merge(baseConfig, { NODE_ENV: '"production"', }, }), - new MiniCssExtractPlugin({ - filename: '[name].css', - }), new webpack.NamedChunksPlugin(), ], optimization: { diff --git a/build-config/utils.js b/build-config/utils.js index 0a6a9e72..e3a9b5e0 100644 --- a/build-config/utils.js +++ b/build-config/utils.js @@ -2,62 +2,21 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin') const cssLoaderConfig = require('./css-loader.config') const chalk = require('chalk') -// merge css-loader in development -exports.mergeCSSLoaderDev = beforeLoader => { - const loader = [ - // 这里匹配 `