साथ संपूर्ण url() सीएसएस में पृष्ठभूमि छवियों के लिए पथ नहीं लगाया जा सका मैं निम्नलिखित Webpack config (मोटे तौर पर, यह इस पोस्ट के लिए सरलीकृत किया गया है) है:Webpack
const rootPublic = path.resolve('./public');
const LOCAL_IDENT_NAME = 'localIdentName=[name]_[local]_[hash:base64:5]';
const CSS_LOADER = `css?sourceMap&${LOCAL_IDENT_NAME}&root=${rootPublic}`;
const SASS_LOADER = 'sass?sourceMap&includePaths[]=' + path.resolve(__dirname, './src/styles');
// ... loaders:
loaders: [
{
test: /\.(jpe?g|png|gif|svg)$/,
loader: 'url-loader?limit=10000&name=[path][name].[ext]'
},
{
test: /\.scss$/,
loader: config.DEVELOPMENT_MODE ? `style!${CSS_LOADER}!autoprefixer!${SASS_LOADER}`
: ExtractTextPlugin.extract('style', `${CSS_LOADER}!autoprefixer!${SASS_LOADER}`)
}, // ...
]
अब इस छवियों के लिए पूरी तरह से ठीक काम करता है एससीएसएस फ़ाइलों में सामान्य रूप से संदर्भित:
0:.some-static-class {
background: url('/images/bg.png');
}
हालांकि, यह जब :local
निर्देशों का उपयोग नहीं काम करता है
और मुझे लगता है कि ऐसा इसलिए है क्योंकि root
सीएसएस लोडर के लिए परिभाषित किया गया है। मुझे एक बिल्ड त्रुटि मिलती है: Module not found: Error: Cannot resolve 'file' or 'directory' ./../../../../../../../../images/bg.gif
यदि मैं css-loader config से root
हटा देता हूं, तो यह ठीक बनाता है लेकिन फिर पथ क्रोम के इंस्पेक्टर में "दिखता है" सही है, लेकिन जब आप वास्तव में एक नए टैब में लिंक खोलते हैं , यह इंगित करता है: chrome-devtools://devtools/bundled/"/images/bg.png"
जो स्पष्ट रूप से सही ढंग से हल नहीं करता है।
मुझे यकीन नहीं है कि समस्या url-loader
कॉन्फ़िगरेशन के साथ है, या वास्तव में क्या चल रहा है।
मैंने resol.root, resol.modulesDirectories, आदि निर्दिष्ट करने के लिए विभिन्न वेबपैक कॉन्फ़िगरेशन के साथ खेला, लेकिन पूरी तरह से यह सुनिश्चित नहीं है कि उनके पास कोई प्रभाव हो रहा है या यदि मैं बस इसके बारे में पूरी तरह गलत हूं। मैं resolve-url-loader
पर भी आया लेकिन यह सुनिश्चित नहीं है कि मुझे यह भी चाहिए कि मुझे क्या चाहिए।
कोई विचार? MTIA!
अद्यतन
मैं नोट करना चाहिए, कि यह सफारी में ठीक काम करता है, लेकिन नहीं क्रोम में। तो यह क्रोम-विशिष्ट बग की तरह लगता है, लेकिन सफारी में हमारे सभी विकास करना व्यावहारिक नहीं है।
मैं भी vue-style-loader पर आया, जो शैली-लोडर का एक कांटा है जो इस समस्या को ठीक करने का दावा करता है, लेकिन जिस तरह से इसे ठीक करता है वह एक हैकी बहिष्कृत भागने/अनदेस्केप विधि पर निर्भर करता है।
यह मेरा जीवन बचाया, धन्यवाद! – cinnaroll45
@ cinnaroll45 चीयर्स! :) – Sergiu