サーバー用とクライアント用の 2 つの webpack 構成を持つユニバーサル JavaScript アプリがあります。両方の構成で、ファイルローダーを使用して静的ファイル (フォント、画像など) を要求し、それらのアセットの URL を取得しています。
両方の構成で、publicPath
/static/
. クライアント側のビルドでは、アセットの URL は正しくプレフィックスが付けられていますが、サーバー側のビルドではそうではありません。
サーバー側の設定は次のとおりです。
const fs = require('fs');
const path = require('path');
const webpack = require('webpack');
const universalConfig = require('./universal.config.js');
// Exclude all modules in node_modules
// http://jlongster.com/Backend-Apps-with-Webpack--Part-I
const nodeModules = fs.readdirSync('node_modules')
.filter(x => {
return x !== '.bin' && x !== 'gsap';
}).reduce((container, module) => {
container[module] = `commonjs ${module}`;
return container;
}, {});
module.exports = {
target: 'node',
resolve: resolve: {
root: path.resolve(__dirname, '../'),
extensions: ["", ".js", ".jsx"]
},
entry: [
'babel-polyfill',
'server/entry.js'
],
output: {
filename: 'server.js',
path: path.resolve(__dirname, '../build/server'),
publicPath: '/static/'
},
externals: nodeModules,
plugins: [
new webpack.BannerPlugin(
'require("source-map-support").install();',
{ raw: true, entryOnly: false }
),
new webpack.NormalModuleReplacementPlugin(/gsap/, 'node-noop')
],
node: {
__dirname: true
},
module: loaders: [
{test: /\.jsx?$/, exclude: /node_modules/,loader: 'babel'},
{test: /\.(eot|svg|ttf|woff2?|jpg|png)$/i, loader: 'file-loader'}
]
};
output.publicPath
必要な呼び出しで構成オプションが使用されていない理由を誰でも見ることができますか?