Kno*_*uch 2 css webpack mini-css-extract-plugin
我在我的打字稿和webpack项目中使用MiniCssExtractPlugin.
我的MiniCssExtractPlugin的webpack配置看起来像
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
entry: './src/index.tsx',
mode: "development",
output: {
path: path.resolve(__dirname, "build"),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: "awesome-typescript-loader"
},
{
enforce: "pre",
test: /\.js$/,
loader: "source-map-loader"
},
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
modules: true,
sourceMap: true,
importLoader: 2
}
},
"sass-loader"
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: "./index.html"
}),
new MiniCssExtractPlugin({
filename: "foo.css",
chunkFilename: "[id].css"
})],
devtool: "source-map",
resolve: {
extensions: [".js", ".ts", ".tsx"]
}
}
Run Code Online (Sandbox Code Playgroud)
现在我项目中的scss文件有这个片段
h1 {
border-bottom: 3px solid #880055;
display: inline;
}
.container {
font-size: 1.3rem;
}
.is-completed {
text-decoration: line-through;
color: #00ff00;
}
Run Code Online (Sandbox Code Playgroud)
当我的应用程序运行时,npm start我可以看到标题H1有一个颜色的下划线880055.所以这意味着我的scss文件被正确读取.
如果我进入chrome开发人员工具并进入网络选项卡并寻找CSS.我可以看到正在下载的foo.css.如果我查看foo.css的内容
它没有我的"已完成"课程.相反,我看到类似的东西
h1 {
border-bottom: 3px solid #880055;
display: inline; }
.pxcHIyOVHeytUeG27u4TO {
font-size: 1.3rem; }
._1Z5_KVJNKd1X2P3HKM63j {
text-decoration: line-through;
color: #00ff00; }
Run Code Online (Sandbox Code Playgroud)
所以像h1这样的元素类很好,但其他一切都是乱码.这是怎么回事?
您可以使用选项localIndentName中的查询参数css-loader来指定您希望生成的类(标识符)在开发和/或产品中的外观。请参阅下面的示例,了解如何为我解决这个问题。
module.exports = {
module: {
rules: [
{
test: /\.css$/i,
loader: 'css-loader',
options: {
modules: {
localIdentName: '[name]-[local]--[hash:base64:5]',
},
},
},
],
},
};
Run Code Online (Sandbox Code Playgroud)
如果我要使用上面示例中的配置,并且调用我正在渲染的组件的名称,HelloWorld并且该组件中使用的类是.container,如果我要运行我的应用程序(dev 或 prod)并检查devtools 我的组件上的类HelloWorld如下所示:
<div class="HelloWorld-container--16ABh"> Hello World </div>
您可以尝试设置您的内容localIdentName以及显示的哈希字符数。
localIdentName请参阅此处查询参数的文档: https://github.com/webpack-contrib/css-loader#localidentname
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |