react-hot-boilerplateで新しいプロジェクトを開始しました。cssファイルをindex.htmlに追加しようとするまで、すべてうまくいきました。
<Link href="/style/main.css" rel="stylesheet">
ホットローダーは css ファイルを読みません。いくつかの調査の後、server.jsのこの行がすべてのリクエストをindex.htmlにリダイレクトすることがわかりました
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
に変更しました
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.get('/style/main.css', function(req, res) {
res.sendFile(path.join(__dirname, 'style/main.css'));
});
そしてそれはうまくいきました。それを行うより良い方法はありますか?servere.js のすべてのリソースをマップする必要がありますか? 多くのエラーが発生し、単純に className="myCustomStyle" を使用できないため、webpack で style-loader または css-loader を使用したくありません。
var path = require('path');
var webpack = require('webpack');
var packageJSON = require('./package.json');
const PATHS = {
build: path.join(__dirname, 'target', 'classes', 'META-INF', 'resources', 'webjars', packageJSON.name, packageJSON.version)
};
module.exports = {
devtool: 'cheap-module-source-map',
resolve: {
extensions: ['', '.js', '.jsx', '.scss'],
alias: {
config: path.join(__dirname, 'src/config/dev.js'),
},
},
entry: [
'webpack-hot-middleware/client',
'./src/index'
],
output: {
path: PATHS.build,
filename: 'app-bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
module: {
loaders: [{
test: /\.js$/,
loaders: ['react-hot', 'babel'],
include: path.join(__dirname, 'src')
}, {
test: /\.css$/,
loader: 'style-loader!css-loader?modules=true&localIdentName=[name]__[local]___[hash:base64:5]'
}]
}
};