在SASS中,是否可以从另一个目录导入文件?例如,如果我有这样的结构:
- root_directory
- sub_directory_a
- _common.scss
- template.scss
- sub_directory_b
- more_styles.scss
Run Code Online (Sandbox Code Playgroud)
template.scss可以导入_common.scss,@import "common"但是more_styles.scss可以导入_common.scss吗?我尝试了一些不同的东西,包括@import "../sub_directory_a/common"和@import "../sub_directory_a/_common.scss",但似乎没有任何工作.
Oli*_*ver 67
看起来SASS的一些变化使您最初尝试做的事情成为可能:
@import "../subdir/common";
Run Code Online (Sandbox Code Playgroud)
我们甚至将这个用于一些完全不相关的文件夹位于c:\projects\sass:
@import "../../../../../../../../../../projects/sass/common";
Run Code Online (Sandbox Code Playgroud)
只需加上足够的../,以确保你最终会在驱动器根目录,你很高兴.
当然,这个解决方案远非漂亮,但我无法从完全不同的文件夹中导入工作,既不使用I c:\projects\sass也不将环境变量SASS_PATH(从:: load_paths引用)设置为相同的值.
Mii*_*kka 33
您可以使用Ruby代码中的-I命令行开关或:load_paths选项添加sub_directory_a到Sass的加载路径.因此,如果您正在运行Sass root_directory,请执行以下操作:
sass -I sub_directory_a --watch sub_directory_b:sub_directory_b
Run Code Online (Sandbox Code Playgroud)
然后,你可以简单地使用@import "common"在more_styles.scss.
Sam*_*mmi 14
使用带有sass-loader的webpack我可以使用〜来引用项目根路径.例如,假设OPs文件夹结构,并且您在sub_directory_b中的文件中:
@import "~sub_directory_a/_common";
Run Code Online (Sandbox Code Playgroud)
请参阅sass-loader自述文件中的Usage/Imports下的内容:https://github.com/webpack-contrib/sass-loader
导入.scss具有不同相对位置的嵌套导入的文件将不起作用.最常见的答案(使用很多../)只是一个肮脏的黑客,只要你添加足够../的东西到达项目的部署操作系统的根目录就可以工作.
使用
:load_paths在config.rd基于罗盘的框架(例轨)使用下面的代码
scss-config.json为fourseven/meteor-scss
{
"includePaths": [
"{}/node_modules/ionicons/dist/scss/"
]
}
Run Code Online (Sandbox Code Playgroud)
例如,
fourseven/meteor-scss您可以使用{}以下示例突出显示项目的顶级
@import "{}/node_modules/module-name/stylesheet";
Run Code Online (Sandbox Code Playgroud)
小智 5
Gulp 将完成监视 sass 文件的工作,并使用 includePaths 添加其他文件的路径。例子:
gulp.task('sass', function() {
return gulp.src('scss/app.scss')
.pipe($.sass({
includePaths: sassPaths
})
.pipe(gulp.dest('css'));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99383 次 |
| 最近记录: |