首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编译后的Sass奇怪地更改了类名,Webpack 2 ExtractTextPlugin

编译后的Sass奇怪地更改了类名是因为在使用Webpack 2的ExtractTextPlugin插件时,该插件会将CSS样式从JavaScript文件中提取出来,并生成一个单独的CSS文件。在这个过程中,可能会出现类名被奇怪地更改的情况。

这种情况通常是由于Webpack的CSS模块化功能导致的。CSS模块化是一种将CSS样式作用域限定在特定组件或模块中的技术,它可以防止样式冲突和全局污染。在Webpack中,CSS模块化可以通过配置CSS Loader来实现。

当使用ExtractTextPlugin插件提取CSS样式时,Webpack会将CSS模块化的类名进行处理,以确保它们的唯一性。这通常会导致类名被更改为一些奇怪的字符串,例如类似于"stylesclassName_hash"的形式。

尽管类名被更改了,但这不会影响样式的应用和渲染。因为在编译后的CSS文件中,类名已经被替换成了新的唯一标识符,而在HTML中使用的类名仍然是原始的类名。

解决这个问题的方法是在Webpack配置中添加CSS Loader的options选项,将模块化的类名保持原样。具体的配置如下:

代码语言:javascript
复制
module: {
  rules: [
    {
      test: /\.scss$/,
      use: ExtractTextPlugin.extract({
        fallback: 'style-loader',
        use: [
          {
            loader: 'css-loader',
            options: {
              modules: true,
              localIdentName: '[name]__[local]___[hash:base64:5]'
            }
          },
          'sass-loader'
        ]
      })
    }
  ]
},
plugins: [
  new ExtractTextPlugin('styles.css')
]

在上述配置中,通过设置modules: truelocalIdentName选项,可以保持类名的原始形式。localIdentName选项可以自定义类名的生成规则,上述配置中使用了类似于CSS模块化的命名规则。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云云数据库MySQL版等。你可以通过腾讯云官网获取更详细的产品介绍和相关链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript 中使用 CSS Modules

但是随着 web 组件化需求越来越强烈,CSS 这种特性开始成为束缚开发者自由飞翔绳索,每一个 CSS 都有可能产生意想不到冲突,或者被各个组件覆盖来覆盖去,每当修改一个组件时,我们必须谨小慎微...严重是,组件化背景下,JS + 模板 + CSS 才能称为一个完整组件,每个组件如果单独引用一个 CSS 文件,你只能通过约束命名来规避不同组件间可能产生冲突。...先来个完整 Webpack 配置文件: var path = require('path'); var webpack = require('webpack'); const ExtractTextPlugin...启用 CSS Module 很简单,就一句话 modules: true, 然后下面有个选项 localIdentName: "[local]_[hash:base64:5]" 是用来指定生成规则...作用当然是把 SASS 文件编译成 CSS 文件; typings-for-css-modules-loader 是在 css-loader 上包了一层,它选项完全兼容 css-loader。

2.6K70
  • webpack入门——webpack安装与使用

    我们可以直接使用 require(XXX) 形式来引入各模块,即使它们可能需要经过编译(比如JSX和sass),但我们无须在上面花费太多心思,因为 webpack 有着各种健全加载器(loader)...详尽配置可以参考这里。...是推荐加上,方便出错时能查阅详尽信息(比如 webpack 寻找模块过程),从而更好定位到问题。...JS 各脚本模块可以直接使用 commonJS 来书写,并可以直接引入未经编译模块,比如 JSX、sass、coffee等(只要你在 webpack.config.js 里配置好了对应加载器)。...React 相关 ⑴ 推荐使用 npm install react 形式来安装并引用 React 模块,而不是直接使用编译 react.js,这样最终编译出来 React 部分脚本会减少 10

    1.4K80

    Vue CLI 2.x搭建vue,目录最全分析

    /config')// 配置文件 var ExtractTextPlugin = require('extract-text-webpack-plugin')// 提取css插件 /** @method...new webpack.NoEmitOnErrorsPlugin(),//webpack编译错误时候,中断打包进程,防止错误代码打包到文件中 // 将打包编译代码插入index.html...(获取值)时直接用: process.env.属性 ps:process(进程)是nodejs一个全局变量,process.env 属性返回一个用户环境信息对象 (2)index.js配置解析:.../dist/index.html'),//编译"首页面"生成绝对路径和名字 assetsRoot: path.resolve(__dirname, '...../dist'),//打包编译根路径(默认dist,存放打包压缩代码) assetsSubDirectory: 'static',//静态资源文件夹(一般存放css、js、image等文件)

    1.3K20

    理解CSS模块化

    由于需要默认具有局部作用域,这就涉及到一些初始设置、一个编译过程,以及其他一些难以琢磨东西。...举个具体例子: 如下是一个简单CSS文件。其中,.base不需要是工程中唯一,因为它将不会是真正被解析。它可以看成是在JavaScript模块中使用在样式表中别名。...当然了,这些最终都不重要(虽然短意味着更短样式表),重点在于这些是动态生成、唯一且和正确样式表一一对应。 一些需要注意地方 这就是CSS模块工作方式了。...其实,我还想说是,虽然在模块中,名字是自动生成而不可预知,但是对于模块来说,它还是比样式表容易debug。...modules') } 对于webpack,要讲就是这么多了。 Browserify 我只在命令行中用过Browserify,所以我猜使用起来会复杂一些。

    62140

    webpack】从vue-cli 2x 到 3x 迁移与实践

    模块化开发,保留单个模块可维护性,又减少了http请求数,优化加载速度 2.什么是webpack webpack是前端打包工具,通过分析所在项目的目录结构,找到模块及各模块间依赖关系,且将浏览器不能直接运行语言如...webpack使用配置区别 3.webpack使用 3.1 vue脚手架中webpack目录结构 image.png 左图项目结构为vue-cli 2x版本脚手架生成项目,build文件夹包含了...ts 文件 less-loader:处理 less 文件,并将其编译为 css sass-loader:处理 sass、scss 文件,并将其编译为 css postcss-loader:// 解析CSS...(2) webpack.dev.conf.js 结构 开发环境webpack配置文件,依赖了base.conf,需要将其合并再执行 'use strict' // webpack.dev.js const...通过访问http://localhost:8080/webpack-dev-server/bundle,bundle每次重编译浏览器页面都会自动更新。

    1.1K30

    走近webpack(4)--css相关拓展

    我们前面已经学了很多webpack基本处理情况,一句话总结就是,一个优秀webpack项目,主要核心用法就是整合loader和plugin去处理你想要任何需求。   ...下面,咱们一起来学学如何用webpack来处理less,sass等预编译器。先看看如何用webpack处理less。   .../css/blue.scss';   同样,把sass从js中分离,修改loader配置: { test: /\.scss$/, use: extractTextPlugin.extract...}], fallback: "style-loader" }) }   npm run server发现蓝色div已经出现。...有关node知识不在这里多说,有兴趣大家可以自行去学习*/   配置成功,我们在src/index.css中写点没用代码试试吧。发现打包css中并没有我们新加没用代码,成功!

    1.1K100

    走近webpack(4)–css相关拓展

    我们前面已经学了很多webpack基本处理情况,一句话总结就是,一个优秀webpack项目,主要核心用法就是整合loader和plugin去处理你想要任何需求。   ...下面,咱们一起来学学如何用webpack来处理less,sass等预编译器。先看看如何用webpack处理less。   .../css/blue.scss';   同样,把sass从js中分离,修改loader配置: { test: /\.scss$/, use: extractTextPlugin.extract...}], fallback: "style-loader" }) }   npm run server发现蓝色div已经出现。...有关node知识不在这里多说,有兴趣大家可以自行去学习*/   配置成功,我们在src/index.css中写点没用代码试试吧。发现打包css中并没有我们新加没用代码,成功!

    52210

    vue-cli 脚手架中 webpack 配置基础文件详解

    加载器之后将其链接,以将CSS动态注入到文档中作为样式标签 "vue-template-compiler": "^2.5.2",//这个包可以用来预编译VUE模板到渲染函数,以避免运行时编译开销和...平常我们使用时候会在里面建立js,css,img,fonts等文件夹,作为静态资源调用 ②、components文件夹:用来存放组件,合理使用组件可以高效实现复用等功能,从而更好开发项目。.../dist'),//编译存放生成环境代码位置 assetsSubDirectory: 'static',//js,css,images存放文件夹 assetsPublicPath: '.../',//发布根目录,通常本地打包dist打开文件会报错,此处修改为./。...详细内容 五、结语 第一篇博文总在想要写点什么,就根据自己经验加查了下文档写了这么一篇工具文章,由于有些插件有些用法会重复,所以按照文章先后写过用法给过链接插件一般在后面就省略了,有时间建议从头开始

    1.4K31

    webpack学习笔记(原理,实现loader和插件)

    ,根据配置确定输出路径和文件,把文件内容写入到文件系统。...编译:从 Entry 发出,针对每个 Module 串行调用对应 Loader 去翻译文件内容,再找到该 Module 依赖 Module,递归进行编译处理。...Webpack 启动时候被实例化,它是全局唯一,可以简单把它理解为 Webpack 实例; Compilation 对象包含了当前模块资源、编译生成资源、变化文件等。...该插件名称取名叫 EndWebpackPlugin,作用是在 Webpack 即将退出时再附加一些额外操作,例如在 Webpack 成功编译和输出了文件执行发布操作把输出文件上传到服务器。...调试 Webpack 在编写 Webpack Plugin 和 Loader 时,可能执行结果会和你预期不一样,就和你平时写代码遇到了奇怪 Bug 一样。

    1.7K30
    领券