我正在处理一些大型项目,使用了compass(包括compass精灵工具)sass框架cli工具(compass watch、compass compile),来创建app.css文件。该项目的Sass使用多个@import语句来包含数十个Sass部分。
问题在于,每次对任何导入到app.scss文件中的Sass部分进行小更改后,app.css文件都需要编译超过2分钟(app.css有70000行),同时编译所有这些部分,而我只需要一行更改。
我进行了广泛的研究,并找到了像这篇文章http://blog.teamtreehouse.com/tale-front-end-sanity-beware-sass-import这样的文章,建议使用spockets代替@import来包含sass部分。我比较喜欢这种解决方案,但需要进行大量的重构,甚至测试它是否起作用,而且所有的全局包含,如mixin和变量,也需要包含在项目中使用的每个Sass部分中,这也不是理想的。
在进一步的研究后,我发现了这个https://github.com/petebrowne/sprockets-sass工具,应该可以将@imports自动转换为spockets require语句,以供编译器使用,并保留全局导入的功能。
问题是我不懂Ruby,也没有使用任何与Ruby相关的东西,除了“gem install”语句之外)
有人懂Ruby可以帮我一步一步地解释如何使compass编译器与sprockets-sass配合工作吗?
P.S请不要提出像libsass这样的解决方案,因为我已经测试过它,排除了所有与compass精灵相关的问题,但libsass编译40000行的剩余代码仍需要很长时间(我怀疑问题的一部分不在于编译速度,而在于系统需要创建400000行文件后所需的时间)。
gulp.task('compass', function() { gulp.src('./sass/*.scss') .pipe(compass({ project: path.join(__dirname, './'), require: ["sprockets", "sprockets-sass", "sass", "compass"], css: 'cssOut', sass: 'sass', image: 'images' })) .pipe(gulp.dest('cssOut')); });
- asmodianissprockets-sass
,方法如下:gem install sprockets-sass
。看起来@import
语句仍然具有与以前相同的性质,或者sprockets
没有帮助加快编译速度。 - asmodianis