【发布时间】:2016-07-27 23:54:22
【问题描述】:
我正在使用 url-loader 和 file-loader 来打包我的 sass 文件,但图片 url 有问题。
我尝试使用resolve.alias 为应用程序根目录中的图像目录设置别名,这样我就可以在我的 sass 文件中使用url(~images/myimage.png) - 这适用于url-loader,但如果图像被拾取通过file-loader,它们以重复的公共路径输出,即dist/dist/[hash].png - 无论我使用~ 还是相对路径,情况都是如此。如果我使用图像的绝对路径,它可以工作,但如果我的应用程序安装在子目录下,它就会中断。
目录结构:
- images/
- js/
- styles/
- webpack.config.js
Webpack 配置:
module.exports = {
entry: {
app: './js/bootstrap'
},
output: {
filename: 'bundle.js',
path: 'dist',
publicPath: 'dist/'
},
module: {
loaders: [
{
test: /\.scss$/,
loader: ExtractPlugin.extract('style', 'css!sass')
},
{
test: /\.(gif|png|svg|jpe?g)$/i,
loader: 'url',
query: {
limit: 1000
}
}
]
},
resolve: {
// add alias for application code directory
alias:{
js: path.resolve(__dirname, 'js'),
styles: path.resolve(__dirname, 'styles'),
images: path.resolve(__dirname, 'images')
},
extensions: ['', '.js', '.scss', '.png', '.svg', '.jpg', '.jpeg', '.gif']
}
};
Sass 文件:
.some-class{
background: url('~images/myimage.png') // url-loader works, file-loader doesn't
background: url('../../../images/myimage.png') // url-loader works, file-loader doesn't
background: url('/images/myimage.png') // both loaders work until app mounted under a sub-directory
}
希望我只是错过了一些愚蠢的东西!
【问题讨论】:
-
这是否真的与 Sass 有任何关系(例如,您是否需要 Sass 来重现问题)?
-
本身不是一个 sass 问题,更多的是“大量链接的 webpack 插件问题”。