我试过几件事,但找不到一个好的解决办法。我正在使用grunt编译我的sass并缩小我的javascript。
是否可以在特定目录中自动加载每个.sass文件和每个.js文件?
我试过这样的东西
sass: {
options: {
sourceMap: false
},
dist: {
src: 'src/sass/**/*.sass',
dest: 'dist/css/style.css'
}
}但是这只会加载第一个sass文件。我也不知道得有什么效果,但我也试过了,也没有找到我想要的解决方案。
基本上,sass/文件夹中的所有文件都应该编译成一个大的style.css文件,与javascript相同。
当然,我可以在一个main.sass文件中手动导入每个文件,但是我希望使用一个autoload函数,这样我就不会懒惰,也不会创建新文件,因为我必须添加它们。
编辑:
所以有了这个
files: [{
expand: true,
cwd: "src/sass/",
src: ["**/*.sass"],
dest: "dest/css",
ext: ".css"
}]我真的可以做我想做的事。问题是我的混音器加载得太晚了,这是个错误,因为它找不到我想要包含的混音。
发布于 2015-11-14 17:19:59
这是从多个源文件生成单个输出文件的格式:
concat: {
whatever: {
options: { separator: '\n' },
src: ['src/sass/**/*.sass'],
dest: 'build/tmp.sass' // make sure the temporary build/ dir exists!
}
}它只适用于支持组合多个文件的任务;在本例中是grunt-contrib-concat任务。它生成dist/css/sass.tmp,您需要用sass任务处理它:
sass: {
dist: {
files: [{
src: 'build/tmp.sass',
dest: 'dist/css/style.css'
}]
}
}您将确保它们按照如下所示的顺序运行:
grunt.registerTask( 'default', ['concat', 'sass'] ); // add your uglify/cssmin here但是,我不建议这样做,因为sass文件的顺序是不可控制的,而且它也不能使mixin的可用,即使它们首先被编译成css --这是没有意义的,因为它们失去了它们的“mixin”格式。最好在单个源文件上运行sass并导入该源文件中的其他文件。
更新
关于混合文件的自动加载,SASS参考确实提到您可以使用处理@import的自定义导入器(用Ruby编写);我不确定这是只用于顶级文件导入,还是用于规则中的@import mixin-name(foo),但我不这么认为。
假设您有一个主sass文件,可以基于concat使用另一种方法。您需要向它添加一个@import 'all-mixins'。这个all-mixins.sass是一个生成的文件:
concat: {
all_mixins: {
options: { separator: '\n' },
src: ['src/sass/mixins/*.sass'],
dest: 'build/all-mixins.sass'
}
}并指定要将loadPath添加到路径中的build/:
sass: {
dist: {
options: {
loadPath: 'build/'
},
files: [{
src: 'build/tmp.sass',
dest: 'dist/css/style.css'
}]
}
}这是尽可能接近自动加载,而不扩展sass本身。
https://stackoverflow.com/questions/33710418
复制相似问题