私はurl-loader
とfile-loader
を使って自分のsassファイルをパッケージ化していますが、画像URLに問題があります。Webpackファイルローダー重複したパブリックパス
は私が私が私のSASSファイルでurl(~images/myimage.png)
を使用できるアプリケーションのルートに私のimagesディレクトリをエイリアスするresolve.alias
を使用して試してみた - これは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']
}
};
サスファイル:
.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が必要ですか)? – cimmanon
se seの問題ではなく、より多くの '連鎖したWebpackプラグインの問題が発生しました'。 – Lee