Css sass将导入转换为导入url
新的萨斯和格伦特。我所有与供应商相关的css文件都在_vendor.scss中Css sass将导入转换为导入url,css,sass,gruntjs,Css,Sass,Gruntjs,新的萨斯和格伦特。我所有与供应商相关的css文件都在_vendor.scss中 @import "public/css/bower_components/bootstrap/dist/css/bootstrap.css"; 这转化为 main.css @import url(public/css/bower_components/bootstrap/dist/css/bootstrap.css); 我希望是这样 @import "public/css/bower_components/boo
@import "public/css/bower_components/bootstrap/dist/css/bootstrap.css";
这转化为
main.css
@import url(public/css/bower_components/bootstrap/dist/css/bootstrap.css);
我希望是这样
@import "public/css/bower_components/bootstrap/dist/css/bootstrap.css";
而不是url如何做。
因为接下来我想使用cssjoin将所有导入的css合并到一个文件中,并使用grunt将cssmin合并到一个文件中
文件夹结构
public ---> scss --->vendor-> _vendor.scss
public ---> css ---> bower_components --> ......
public ----> css ---> main.css
繁重的任务
sass: {
dist: {
files: {
'public/css/main.css': 'public/scss/main.scss'
}
}
},
autoprefixer: {
dist: {
options: {
map: true
},
files: {
'public/css/main.css': 'public/css/main.css'
}
}
},
watch: {
css: {
files: '**/*.scss',
tasks: ['sass', 'autoprefixer']
}
},
那是因为。如果您@import'some/file.css'
,它将被编译为@import url(some/file.css)
,因为SASS希望保持原始css导入完好无损(同时讽刺的是以标准方式对其进行更改)
但是,如果您将CSS文件的扩展名更改为.scss
,并将其导入主文件中,SASS编译器将执行其操作,并将其内容包含在原始导入规则中。它之所以有效,是因为常规CSS语法也是有效的SCSS语法,并且它欺骗编译器将您的导入规则视为SCSS导入
而且,似乎没有一个合理的简单方法来改变这种行为,而且显然它不会很快改变
希望这有帮助 您可能需要向我们展示更多代码和文件结构。它似乎没有在那个地址找到css文件,所以它假设它是一个URL。你能告诉我们你的grunt任务是什么样子吗?@DominicAquilina添加了代码n文件夹结构。@KodieGrantham添加了代码n文件夹结构。是的,你的相对路径似乎是错误的。要从您的_vendor.scss文件中访问bower_components文件夹,您需要通过“../”向上爬几层。谢谢,这解决了让我头痛了几个小时的错误。我已经试着在熟悉少一点后再尝试一下SASS,但我想我会坚持少一点。