首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >css-loader破坏postcss-cssnext变量

css-loader破坏postcss-cssnext变量
EN

Stack Overflow用户
提问于 2017-11-13 18:20:49
回答 1查看 147关注 0票数 0

我有以下配置,其中我有一个EventInfoCard。当它处于预加载状态时,它呈现一个不同的组件,该组件从父组件继承了大量CSS。我使用的是postcss-cssnext变量,这个组合函数似乎不能很好地与css-loader配合使用。

EventInfoCard.css

代码语言:javascript
复制
@import '../constants.css';

.root {

}

.thumbnail {
    display: block;
    width: 100%;
    height: 0px;
    padding-bottom: 56%;
    position: relative;
    overflow: hidden;
    border-radius: var(--xxxs)px;
}

.notification {
    border-radius: var(--xxxs)px;
    font-size: 12px;
    display: inline-block;
    height: var(--s)px;
    padding: 0 var(--xxs)px;
    line-height: var(--s)px;
    text-transform: uppercase;
    font-weight: var(--weight-medium);
    margin-right: var(--xxs)px;
}

.description {
    letter-spacing: -0.1px;
    margin-top: 7px;
}

EventInfoCardPreloading.css

代码语言:javascript
复制
@import '../constants.css';

.root {
    background: blue;
}

.thumbnail {
    composes: thumbnail from './InfoCard.css';
    background-color: var(--tones-lightest);
}

.description {
    composes: description from './InfoCard.css';
}

虽然现在它似乎引入了EventInfoCard CSS,但没有转换变量,这最终导致了这个无效的CSS,如下所示。那么我到底做错了什么呢?我认为composes只会获取类名,而不会引入文件。

postcss配置:

代码语言:javascript
复制
const path = require('path')

module.exports = {
    plugins: {
        'postcss-partial-import': {},
        'postcss-mixins': {
            mixinsDir: path.join(__dirname, 'statics', 'mycujoo-theme', 'mixins')
        },
        'postcss-nested': {},
        'postcss-cssnext': {
            browsers: ['last 2 versions', '> 5%'],
        }
    }
}

webpack加载器配置:

代码语言:javascript
复制
    test: /\.css$/,
    use: extractCSS.extract({
        fallback: 'style-loader',
        use: [
            { loader: 'css-loader', options: { modules: true, localIdentName: '[name]__[local]___[hash:base64:5]' } },
            { loader: 'postcss-loader' }
        ]
    }),
EN

回答 1

Stack Overflow用户

发布于 2017-11-22 23:01:37

由于您的配置使用了CSS Modulespostcss-loader,因此还应该声明一个importLoaders选项来创建postcss-loader and css-loader with CSS modules enabled work together

代码语言:javascript
复制
test: /\.css$/,
use: extractCSS.extract({
    fallback: 'style-loader',
    use: [
        { loader: 'css-loader', options: { modules: true, importLoaders: 1, localIdentName: '[name]__[local]___[hash:base64:5]' } },
        { loader: 'postcss-loader' }
    ]
}),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47262019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档