相关疑难解决方法(0)

如何在Webpack中将构建哈希作为环境变量传递?

我有一个内部应用程序,它使用经常部署的webpack构建.为了使错误报告更容易,我想包含[hash]webpack添加到包名称的构建哈希的环境变量.这将让我快速确定用户是否在最新版本上.

使用DefinePlugin,以下内容不会插入字符串,而只是存储文字[hash]字符串.

new webpack.DefinePlugin({
  'process.env': {
    'HASH': JSON.stringify('[hash]')
  }
})
Run Code Online (Sandbox Code Playgroud)

有没有办法直接作为变量访问哈希,还是有一种特定的方法来进行插值?

javascript environment-variables webpack

10
推荐指数
1
解决办法
4062
查看次数

Webpack:Webworker 和 Web 代码之间共享代码的通用块?

我的浏览器应用程序的 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)

javascript bundle web-worker webpack code-splitting

5
推荐指数
1
解决办法
2700
查看次数