【问题标题】:PostCss doesn't import variable filePostCss 不导入变量文件
【发布时间】:2017-03-20 18:45:56
【问题描述】:

我已经安装了postcss-importpostcss-simple-vars。我想将所有颜色选择保存在一个文件中,然后在需要时只使用 $orange 而不是十六进制代码。暂时无法使用。

如果我在我的主 css 文件顶部包含变量名+十六进制代码 ($orange: #ffa500"),则该值将被很好地转换 (.button{color: $orange;}。但如果我将变量保存在单独的文件中,则找不到它(运行 gulp watch 时,我的命令行中出现“未定义变量”错误)。

目前,我的文件结构如下:

app/assets/styles/modules/_variables.css(带有 $orange: #ffa500"), app/assets/styles/modules/_global.css(带有所有全局设置,例如 边框)app/assets/styles/styles.css(这个文件包含所有 @import 语句:@import "normalize.css", @import "modules/_global", @import "modules/_variables")。

Normalize.css_global.css 被导入(并编译成 app/temp/styles)就好了。但不是_variables.css 文件!有人可以解释发生了什么吗?

这是我的 gulp 设置:

var gulp = require('gulp'),
watch = require('gulp-watch'),
postcss = require('gulp-postcss'),
autoprefixer = require('autoprefixer'),
simplevars = require('postcss-simple-vars'),
nested = require('postcss-nested'),
cssImport = require('postcss-import');

gulp.task('styles', function() {
    return gulp.src('./app/assets/styles/styles.css')
        .pipe(postcss([cssImport, simplevars, nested, autoprefixer]))
        .pipe(gulp.dest('./app/temp/styles'));
});

谢谢。

【问题讨论】:

    标签: javascript css variables gulp postcss


    【解决方案1】:

    来自 postcss-simple-vars GitHub's project 的上一个已关闭问题,由 PostCSS 作者和此插件的维护者:

    在 PostCSS 中的逻辑是不同的。
    您将 _variables.pcss 导入到 styles.pcss。
    不是全局状态。

    (我用你的文件命名替换了 a 和 c)
    因此,您需要将变量导入(每个/全部)您的其他“部分”(并确保它不会无数次将 CSS 规则输出到您的 CSS。或者如果您的缩小器会处理这种情况)

    【讨论】:

    • 谢谢。我试图避免在所有其他部分中导入我的变量,尽管它始终是一种选择。我继续玩它,并意识到我必须重新排列我的文件(app/assets/styles/styles.css)和所有的部分。只要我将 @import ("modules/_variables") 放在任何其他依赖于 _variables 的文件之前,它就起作用了。真是个愚蠢的错误。
    • 这并不出人意料,因为 Sass 首先做到了 :) 相关:LESS 有一个很好的选择:@import (reference),有点“仅供参考”
    猜你喜欢
    • 2018-04-17
    • 2015-10-15
    • 2019-11-29
    • 2018-03-05
    • 1970-01-01
    • 2021-05-05
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多