Доступ к объекту окна браузера в файле конфигурации webpack - PullRequest
0 голосов
/ 14 июля 2020

У меня есть проект webpack, и я использую webpack-dev-server для его использования. Я хочу иметь возможность установить некоторые настройки в window.localStorage, которые webpack может использовать при перезапуске с их параметрами live-reload, чтобы определить, как начать. В devServer я хочу, чтобы параметр open мог динамически изменяться данными, которые находятся в localStorage.

Возможно ли это каким-то образом? Файл называется webpack.config.babel.js, используя babel/register, чтобы иметь возможность использовать импорт на верхнем уровне.

Прямо сейчас console.log(window) в начале файла конфигурации возвращает undefined. Как мне получить доступ к этому объекту?

// webpack.config.babel.js using babel/register

import HtmlWebPackPlugin from "html-webpack-plugin";
import MiniCssExtractPlugin from "mini-css-extract-plugin";
import { tabTracker } from "./src/actions/action_helpers";

module.exports = function(env, argv) {
  console.log(window);

  return {
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: "babel-loader"
          }
        },
        {
          test: /\.html$/,
          use: [
            {
              loader: "html-loader",
              options: { minimize: true }
            }
          ]
        },
        {
          test: /\.css$/,
          use: [MiniCssExtractPlugin.loader, "css-loader"]
        }
      ]
    },
    devServer: {
      target: "web",
      open: (() => console.log(window.localStorage))(),
      proxy: {
        ...
      }
    },
    plugins: [
      new HtmlWebPackPlugin({
        template: "./src/index.html",
        filename: "./index.html"
      }),
      new MiniCssExtractPlugin({
        filename: "[name].css",
        chunkFilename: "[id].css"
      })
    ]
  };
};
// package.json

{
  ...,
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --mode development",
  },
  ...
}

Я пропустил некоторую информацию из файлов package. json и webpack.config.babel. js, которые не принадлежат.

...