【问题标题】:How to compile all scss files located in different folders?如何编译位于不同文件夹中的所有 scss 文件?
【发布时间】:2017-06-25 23:13:15
【问题描述】:

我的文件结构如下:

all_skins
|— 1
  |— css
     |- _skinVariables.scss
     |— file.scss
     |— file.css
|— 2
  |— css
     |- _skinVariables.scss
     |— file.scss
     |— file.css
|— 3
  |— css
     |- _skinVariables.scss
     |— file.scss
     |— file.css
common_css
| _specificCode.scss
| _otherCode.scss

在我的每个“皮肤”的scss 文件中,我正在导入一些通用的scss 部分,例如_skinsVariables_specificCode。每个皮肤的 _skinVariables 部分更改,_specificCode 是在位于all_skins 目录之外的所有 scss 文件中重用的一般部分。

问题是每当我对specificCode部分文件进行更改时,我都需要手动重新编译每个scss文件以使用修改后的代码生成新的css。

我正在使用 PhpStorm 的文件观察器,因此对特定 scss 文件的任何更改都会触发观察器,但对包含的 _specificCode(或任何包含的部分)的修改不会触发它。

有没有办法编译父文件夹中的所有 scss 文件?这些编号的子文件夹有 30 多个,因此手工操作非常耗时。

任何使用命令行、PhpStorm 本身或其他软件(如 grunt)的解决方案都可以满足我的需求(最不希望)。

编辑:

file.scss 如下:

@import "skinVariables";
@import "../../../common_css/specificCode"

为了更清楚一点,问题是我的所有 file.scss 中都包含了部分,为了让生活更轻松,大部分代码都来自部分。

当我修改在所有文件中导入的部分时,例如 _specificCode.scss,我需要重新编译所有 file.scss,但这不会发生。

观察者目前的工作方式是在对 file.scss 本身进行修改时触发,而不是对包含的部分进行修改。

有什么解决办法吗?

【问题讨论】:

  • 1) 您的文件观察器设置是什么? 2) 是“不起作用”的_specificCode(或其他)文件在项目中吗? 3) 我假设您可以很好地编译您的个人皮肤(换句话说:当前文件观察器工作)。 4) 并且对_skinsVariables 的更改正常处理(皮肤被编译)?
  • 1) 它们在 phpstorm 中:gyazo.com/2cd504495766e57099d22063dcd1a75d 2) 是的,它是项目的一部分,但在 all_skins 文件之外。 3) 我可以手动编译它们就好了,它们会自动编译只有如果我编辑文件本身4)不,更改包含的部分不要触发观察者
  • 让我把事情弄清楚——你设置了 FileWatcher——一切正常——除非你对 _specificCode.scss 进行了更改?我不明白这一点“但是对包含的 _specificCode (或任何包含的部分)的修改不会触发它。” - “任何包含的部分”是什么意思?
  • @HonzaRydrych 不仅适用于该特定文件,还适用于任何部分文件。修改部分不会重新编译包含该部分的所有 .scss 文件,即使它们正在被监视。
  • 您能否更改文件系统结构,在您原来的问题中,使用标签什么是部分的以及 _specificCode.scss 和 _skinVariables.scss 的位置?

标签: ruby compilation sass phpstorm


【解决方案1】:

所以现在你已经设置了文件观察器来观察打开的文件,并且在修改的情况下它应该只编译文件本身。

你需要设置你的scss transpiler来编译/all_skins/1/css/file.scss、/all_skins/2/css/file.scss等,但我不知道ruby transpiler是否您正在使用的可以进行此设置。

我解决了与http://gulpjs.com(Grunt 替代)类似的问题,使用 Gulpfile.js 配置(更改为您的路径):

gulp.task('styles', function() {
    return gulp.src([
            'all_skins/**/*.scss'
        ])
        .pipe($.sass())
        .pipe($.autoprefixer('last 3 version'));
});

然后设置一个 PhpStorm 的文件监视器来监视整个 all_skinscommon_css 文件夹(可以通过“范围”设置)并运行名为“样式”的 gulp 任务,它应该可以工作。

【讨论】:

  • 是的,我也正朝着那个解决方案前进,但是使用 npm,它看起来是最好的选择。谢谢 Honza。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
相关资源
最近更新 更多