我使用 NPM 和 Gulp 作为我的包管理器和构建系统。我已经安装了“gulp-sass”来支持 sass,并安装了“gulp-clean-css”以便我可以@import css 文件内联。我在“_frontend/scss/**/*”中捕获我的 SCSS 文件,并将其编译为单个文件作为“assets/frontend/css/styles.css”。在输出位置,我还有其他重要的资源文件夹,它们是“css”的兄弟:“fonts”、“img”和“js”。
我的问题是当我导入“* .css”文件时,我无法正确获取指向目标的 url() 相对路径。但是,当我导入“.scss”文件时没问题。
这是我的代码(我拿出了源图、错误日志等来简化问题):
GULPFILE.JS
gulp.task('styles', function() {
gulp.src(styles.src)
.pipe(sassGlob()) // Support for bundle requires for Sass
.pipe(cleanCSS({
// relativeTo: './node_modules', <-- I tried with different variations here, no luck
// root: './node_modules', <-- I tried with different variations here, no luck
processImport: true
}))
.pipe(rename('styles.css')) // Name output CSS file
.pipe(gulp.dest('../assets/frontend/css/'));
});
主文件
以下是可以的
@import "font-awesome/scss/font-awesome.scss";
输出似乎带有正确的相对路径 示例输出: url(../fonts/FontAwesome/fontawesome-webfont.eot?v=4.6.1)
以下不是
@import '../node_modules/jquery-ui/themes/base/jquery-ui.css';
示例输出: url(../node_modules/jquery-ui/themes/base/images/animated-overlay.gif) ^^ 以上以某种方式附加了“../node_modules”。 我希望它以某种方式将其设置为“../img/vendor/jquery-ui/what/ever/i/like/here”
这是我的目录结构。
_frontend
├─fonts
│ ├─Beamstyle-Icons
│ └─Gotham-Light-Regular
├─node_modules
│ ├─jquery-ui
│ │ ├─scripts
│ │ └─themes
│ │ ├─base
│ │ ├─images
│ │ └─minified
│ │ └─images
│ └─ (other stuff...)
│
├─scripts
│ ├─app
│ └─vendor
└─scss
├─config
├─helpers
│ ├─classes
│ ├─functions
│ ├─mixins
│ └─placeholders
└─src
├─blocks
└─components
assets
└─frontend
├─css
├─fonts
├─img
│ ├─Beamstyle-Icons
│ ├─FontAwesome
│ └─Gotham-Light-Regular
└─js
如果有人能在这方面提供帮助,那就太好了。