ctp*_*pax 6 javascript reactjs webpack webpack-dev-server
我的项目结构是
???images
| ??cat.jpg
???components
| ??App.jsx
???webpack.prod.js
???webpack.dev.js
Run Code Online (Sandbox Code Playgroud)
在 webpack.dev 中,我有开发服务器设置 contentBase: path.resolve(__dirname, 'images')
在 webpack.prod 中:
rules: {
test: /\.jpg/,
type: 'asset/resource',
},
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试将我的图像在 App.jsx 中显示为<img src='cat.jpg'/>
,那么它可以在 dev 中工作,但不能在 prod 中使用 404。这是有道理的,因为我没有导入图像并且 webpack 没有在包中“看到”它,而 contentBase 只是开发者。
我也试过
import cat from '../images/cat.jpg';
...
<img src={cat}></img>
Run Code Online (Sandbox Code Playgroud)
但这在生产中有效,但在开发中崩溃,这也是有道理的,因为开发中没有资产加载器。我也可以在 dev 中添加加载器,但我觉得这违背了具有 contentBase 设置的目的,然后可以完全删除它。
所以我的问题是:是否可以在 dev 中使用 contentBase 来显示图像,而只在 prod 中使用资产加载器?感觉它应该以某种方式......
谢谢!
我没有在我的 webpack 上使用contentBase
at 。devServer
但它适用于开发和生产,具有以下功能:
结构
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80images \n| \xe2\x94\x94\xe2\x94\x80logo.png\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80components\n| \xe2\x94\x94\xe2\x94\x80App.jsx\n
Run Code Online (Sandbox Code Playgroud)\n网页包
\n...\noutput: {\n ...\n assetModuleFilename: 'images/[hash][ext][query]'\n},\nmodule: {\n rules: {\n test: /\\.(?:ico|gif|png|jpg|jpeg)$/i,\n type: 'asset/resource'\n },\n...\n
Run Code Online (Sandbox Code Playgroud)\n应用程序.jsx
\nimport Logo from '../images/logo.png'\n\n<img src={Logo}></img>\n
Run Code Online (Sandbox Code Playgroud)\n