到目前为止,我一直在使用webpack构建我的同构Node / Express / React应用程序并通过在我的索引html文件中包含以下内容来提供我的bundle.js而没有任何问题:
<script src='/bundle.js'></script>
但是,为了部署到 生产环境 ,我发现我需要一个缓存破坏机制,所以我到达webpack-manifest-plugin所以我可以将唯一的构建哈希添加到bundle.js文件中 .
带有插件的webpack配置如下所示:
webpack.config.js
var ManifestPlugin = require('webpack-manifest-plugin');
var output = {
path: path.join(__dirname, [ '/', config.get('buildDirectory') ].join('')),
filename: "bundle.[hash].js"
};
它将 manifest.json
文件输出到构建目录,如下所示:
{
"main.js": "bundle.af0dc43f681171467c82.js"
}
我以为我可以在 manifest.json
中读到类似的内容:
var manifestPath = path.join(__dirname, [ '/', config.get('buildDirectory') ].join(''),'/manifest.json');
var manifest = require(manifestPath)
但我明白了
错误:找不到模块'C:\ Users \ banjer \ projects \ foo \ build \ manifest.json'
这是因为webpack-dev-server将构建目录保存在内存而不是磁盘上(AFAIK)?什么是读取此manifest.json的最佳方法,并将bundle文件名注入我的主索引html文件,例如?:
<script src='/bundle.af0dc43f681171467c82.js'></script>
关于这些各种资产插件的文档根本没有解释这个步骤,但是我再次认为它不太明显,因为webpack-dev-server ...或者我的堆栈中的某些东西我还没有完全掌握 .
1 回答
我使用了一个更简单的路由,并使用package.json中的
version
作为缓存接收器附加到bundle.js .webpack.config.js
然后我以类似的方式从package脚本中读取,该脚本生成带有脚本标记的
.ejs
索引文件 .