私はReactJSアプリケーションを使用しています。webpackを使用しています。semantic-ui-reactとwebpackを使用した画像コンポーネントのパス
この単純な例では、与えられたURLをsrc
-attributeとして<img>
にする必要があります。
画像リソースをwebpackにバンドルして、適切なローダーを介して処理するにはどうすればよいですか?なぜ画像リソースがバンドルされないのかわかりません。私はPROD環境の話ではないを頂きますので
私は、このような<script src="/admin/dist/admin.bundle.js"></script>
生成admin.bundle.js
が含まれていません。私はちょうどwebpack-dev-server --inline --hot
を使用しているので、私はこのようにadmin.bundle.js
を含めています: <script src="http://localhost:8080/admin/dist/admin.bundle.js"></script>
完全に動作します。
import React from 'react';
import { Container, Image } from 'semantic-ui-react';
import MainMenu from './menu/components/MainMenu';
const App =() => (
<Container>
<Image src="/res/img/image.png" />
<MainMenu />
</Container>
);
export default App;
は、次のように私の(symfonyのとReactJS)プロジェクトのディレクトリ構造がある(私は明確にする無関係なディレクトリ/ファイルommited):
.
├── README.md
├── app
│ ├── AppCache.php
│ ├── AppKernel.php
│ ├── Resources
│ │ ├── client
│ │ │ └── admin
│ │ │ ├── node_modules
│ │ │ ├── package.json
│ │ │ ├── src
│ │ │ │ ├── App.jsx
│ │ │ │ ├── index.jsx
│ │ │ │ ├── menu
│ │ │ │ └── res
│ │ │ ├── webpack.config.js
│ │ └── views
│ └── config
└── web
├── admin
│ ├── dist
├── app.php
└── app_dev.php
マイwebpack.config.jsをのような行く:
const path = require('path');
const webpack = require('webpack');
const basePath = path.normalize(__dirname + '/../../../../');
module.exports = {
entry: [
'./src/index.jsx'
],
output: {
filename: 'admin.bundle.js',
publicPath: '/admin/dist/',
path: path.resolve(basePath, 'web', 'admin', 'dist')
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
],
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [ 'react-hot-loader', 'babel-loader', 'eslint-loader' ]
},
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
},
{
test: /\.(png|jpg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 40000 // 40 kB
}
}
]
},
{
test: /\.(eot|woff|woff2|svg|ttf)([\?]?.*)$/,
loader: "file-loader"
}
]
},
resolve: {
modules: [
path.resolve(__dirname, 'src'),
'node_modules'
],
extensions: [ '.js', '.jsx' ]
},
devServer: {
hot: true,
inline: true
}
};
ありがとうございます。それはトリックです。 ローダーは、コンポーネントの小道具を介して参照されたリソースをスキャンするという事実を確信していました。 –
CSSで使用すると、自動的にURLをピックアップするので少し混乱します。背景画像:url(/res/img/image.png) – ryandrewjohnson