Rav*_*han 10 javascript urlloader reactjs webpack webpack-style-loader
我在Webpack中遇到了关于相对路径的问题.让我试着解释一下这个场景:
我在Workspace目录中有2个单独的项目:
由于两个项目都使用相同的样式,所以我想将项目A的SCSS文件[由标准变量,预定义布局,模态,类等组成]重用到项目B中.
现在,如果我尝试在Project-B index.scss中导入Project-A index.scss作为另一部分[ 注释掉背景图像URL依赖性 ],webpack能够生成所需的CSS输出文件.
// Import Project A SCSS [Common Varibles, Classes, Styling etc]
@import "../../../../Project_A/assets/stylesheets/index";
Run Code Online (Sandbox Code Playgroud)
但是,由于Project-A的index.scss进一步引用了相应Relative-Path的背景图像,因此webpack构建会抛出错误
'在XYZ/Project-B/Source/Stylesheets中找不到文件/目录'.
确切的错误块:
./src/assets/stylesheets/index.scss中的错误模块构建失败:ModuleNotFoundError:找不到模块:错误:无法解析'file'或'diWorkSpace\Project_B\src\assets\stylesheets
我无法理解为什么Webpack无法解决Project-A中的资产的相对路径并且仍在查看"项目B"内部.
以下是模拟问题的Code-Repo URL:https: //github.com/raviroshan/webpack-build-issue/tree/master/WorkSpace
重现步骤.
所以,最后,争斗后,得到了一个合适的解决方案.
结果是CSS加载器的问题,即它无法解析与当前文件相对应的URL.
使用resolve-url-loader解决了这个问题. https://www.npmjs.com/package/resolve-url-loader
// Old Loader Config in Webpack-entry
loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!sass-loader?sourceMap')
// New [Fixed] Loader Config in Webpack-entry
loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!resolve-url-loader!sass-loader?sourceMap')
Run Code Online (Sandbox Code Playgroud)
这里有更新的Code-Repo解决方案:https://github.com/raviroshan/webpack-build-issue
注意:不要省略-loader Webpack.config.js应该始终使用加载器名称的长格式(即-loader后缀).
还有另一个名为resolve-url的包,Webpack可以将其与resolve-url-loader混淆.
| 归档时间: |
|
| 查看次数: |
9429 次 |
| 最近记录: |