尝试使用Grunt为单个sass文件创建单个css文件(以及使用多个sass文件到一个css文件)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用Grunt为单个sass文件创建单个css文件(以及使用多个sass文件到一个css文件)相关的知识,希望对你有一定的参考价值。
我有一个项目使用标准设置使用多个sass文件和部分编译成一个全局css文件。
我现在需要将单个sass文件映射到单个css文件(这些是组件/小部件)的功能。
所以在我的最终标记中,小部件将具有以下内容:
<link rel="stylesheet" href="css/main.css"/>
<link rel="stylesheet" href="css/widgets/widget-name.css"/>
我在gruntfile中尝试了一些选项。当前设置如下所示:
sass: {
dist: {
options: {
style: 'compressed'
},
files: {
"Webcontent/css/site.css": "WebContent/source/sass/site.scss"
}
}
},
watch: {
src: {
files: ['WebContent/source/sass/*.scss'],
tasks: ['sass'],
}
}
我尝试过以下方法:
sass: {
dist: {
options: {
style: 'compressed'
},
files: {
"Webcontent/css/site.css": "WebContent/source/sass/site.scss",
"Webcontent/css/widgets/*.css": "WebContent/source/sass/widgets/*.scss",
}
}
},
以及:
sass: {
dist: {
options: {
style: 'compressed'
},
files: [
{src: 'WebContent/source/sass/site.scss', dest: 'Webcontent/css/site.css'},
{src: 'WebContent/source/sass/widgets/*.scss', dest: 'Webcontent/css/widgets/*.css' },
],
}
},
watch: {
src: {
files: ['WebContent/source/sass/*.scss', 'WebContent/source/sass/widgets/*.scss'],
tasks: ['sass'],
}
}
我一直在grunt中得到错误:警告:Warning: Unable to write "Webcontent/css/widgets/*.css" file (Error code: ENOENT
).
当然我不必指定目标css文件?
任何帮助非常感谢。
答案
要编译文件夹中的所有文件,您可以执行以下操作:
sass: {
dist: {
files: [
{
expand: true, // Recursive
cwd: "WebContent/source/sass", // The startup directory
src: ["**/*.scss"], // Source files
dest: "Webcontent/css", // Destination
ext: ".css" // File extension
}
]
}
}
另一答案
基于您的第一个解决方案和http://ryanchristiani.com/getting-started-with-grunt-and-sass/,您的“监视”文件应该更像是这样:
(不确定它是否确实有所作为,但最好试一试)
watch: {
src: {
files: 'WebContent/source/sass/*.scss',
tasks: ['sass'],
}
}
否则,以这种方式构建Gruntfile.js通常更容易:
(只编译main.scss,所有其他.scss文件都是@import
到这个main.scss中)
watch: {
sass: {
files: './assets/css/sass/*.scss',
tasks: ['sass', 'cssmin']
}
},
sass: require( './assets/custom_modules/sass.js' ).task,
cssmin: require( './assets/custom_modules/cssmin.js' ).task
然后在sass.js
exports.task = {
dist: {
options: {
style: 'expanded',
lineNumbers: true,
sourcemap: 'none'
},
files: [{
expand: true,
cwd: 'assets/css/sass/',
src: [ 'main.scss' ],
dest: 'assets/css/',
ext: '.css'
}]
}
};
希望它可以帮助。
祝好运'
以上是关于尝试使用Grunt为单个sass文件创建单个css文件(以及使用多个sass文件到一个css文件)的主要内容,如果未能解决你的问题,请参考以下文章
Grunt:将HTML页面捆绑到单个HTML文件中。所有依赖项