javascript - 使用 mini-css-extract-plugin 将 webpack sass 转换为生产环境中的 css 文件
问题描述
webpack 和节点的新手。我试图弄清楚,如何将巨大的 SCSS 文件转换为用于生产的 CSS 文件,然后将它们链接到输出文件。坐在这里几个小时,在开发模式下一切都很好。当我运行构建脚本时,CSS 文件在文件名中使用哈希构建得非常好。但在生产中,与我的 HTML 文件无关。(在开发中效果很好)。
这是我的 webpack.config.js
const path = require('path')
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = (env, argv) => {
const devMode = argv.mode !== 'production'
return {
entry: {
index: ['@babel/polyfill', './src/scripts/index.js'],
edit: ['@babel/polyfill', './src/scripts/edit.js'],
},
output: {
path: path.resolve(__dirname, 'public/scripts'),
filename: '[name]-bundle.js'
},
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-proposal-object-rest-spread']
}
}
},
{
test: /\.(sa|sc|c)ss$/,
exclude: /node_modules/,
use: [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
{loader: 'css-loader', options: {importLoaders: 2} },
'resolve-url-loader',
'sass-loader',
],
}
]
},
devServer: {
contentBase: path.resolve(__dirname, 'public'),
publicPath: '/scripts/'
},
devtool: 'source-map',
plugins: [
new MiniCssExtractPlugin({
filename: devMode ? '../styles/[name].css' : '../styles/[name].[hash].css',
chunkFilename: devMode ? '../styles/[id].css' : '../styles/[id].[hash].css',
})
]
}
}
在我的 page-js 文件中,我导入了我的 SCSS
import '../styles/styles.scss'
这似乎对生产没有影响,但在开发中运行良好。
经过数小时的研究,我唯一的想法是在 HTML 文件中手动设置链接标签......
我对 webpack 很陌生,所以每一个帮助都非常感谢。提前谢谢了。
解决方案
推荐阅读
- javascript - 编辑 Google 表格 HTML 嵌入
- matplotlib - plt.subplots() 使用 for 循环返回的 Axes 对象
- java - DTO 是更好的做法,还是在无法更改数据库时使用服务?
- php - php Laravel 5.7 控制器不会返回定义的状态代码
- java - junit - Cucumber Runner 类在执行测试之前访问一个通用方法
- swift - MKMapView (MapKit) - 试图缩小以查看整个地球
- python - 在 anaconda 上安装 tensorflow(发生错误:matplotlib 和用户权限(13))
- laravel - Laravel 获取一对多关系
- mysql - 多个不存在 SQL
- r - R Markdown 中的错误(二元运算符的非数字参数)