我有一个内部应用程序,它使用经常部署的webpack构建.为了使错误报告更容易,我想包含[hash]webpack添加到包名称的构建哈希的环境变量.这将让我快速确定用户是否在最新版本上.
使用DefinePlugin,以下内容不会插入字符串,而只是存储文字[hash]字符串.
new webpack.DefinePlugin({
'process.env': {
'HASH': JSON.stringify('[hash]')
}
})
Run Code Online (Sandbox Code Playgroud)
有没有办法直接作为变量访问哈希,还是有一种特定的方法来进行插值?
我的浏览器应用程序的 Web 和 Web Worker 部分之间共享了大量代码。
我怎样才能告诉 webpack 将我的代码分成公共块,以便保证结果 100% 工作?
在我告诉 webpack 生成公共块(它确实做了)之后,webworker 代码中断(在运行时失败)。即使在我修复了微不足道的“窗口未定义”错误之后,工作人员也什么都不做。
我相信这与 webpack 的“目标”选项有关,默认情况下该选项设置为“web”。但我需要“网络”目标,因为我没有纯粹的网络工作者代码。
我也不能做多个 webpack 配置,因为我不能用多个配置做常见的块...
我该怎么办?
如果有人感兴趣:我正在尝试为我的应用程序构建一个最小尺寸的构建,其中包括 monaco 编辑器(提供工作人员):
https://github.com/Microsoft/monaco-editor/blob/master/docs/integrate-esm.md
您可以在这里(在页面底部)看到入口点由 1 个主入口文件 + 工人组成。
由于我使用的重复代码,目前至少浪费了 6 MB,并且由于这个问题目前无法拆分。那是很多浪费的流量。
有任何想法吗?:)
我的 webpack 4.1.1 配置基本上是:
module.exports = (env, options) => {
const mode = options.mode;
const isProduction = mode === 'production';
const outDir = isProduction ? 'build/release' : 'build/debug';
return {
entry: {
"app": "./src/main.tsx",
"editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js',
"ts.worker": 'monaco-editor/esm/vs/language/typescript/ts.worker.js'
},
output: {
filename: "[name].bundle.js",
path: `${__dirname}/${outDir}`, …Run Code Online (Sandbox Code Playgroud)