javascript - 是否可以在不使用查询字符串的情况下传递 webpack 条目配置选项?

标签 javascript configuration webpack webpack-hmr hot-module-replacement

所以我有以下用于热重载的 webpack 服务器配置:

const compiler = webpack(dev);
const settings = middleware(compiler, {
    publicPath: dev.output.publicPath,
    path: `/__webpack_hmr`,
    quiet: true
});

还有一个条目,如下所示:

entry: [
    './src/app.js',
    'webpack-hot-middleware/client?reload=true'
],

现在我原来有这个:

const compiler = webpack(dev);
const settings = middleware(compiler, {
    publicPath: dev.output.publicPath,
    path: `/__webpack_hmr`,
    quiet: true,
    reload: true
});

还有

 entry: [
    './src/app.js',
    'webpack-hot-middleware/client'
 ],

但是在 webpack-hot-middleware 上创建问题后我得到了这个comment开发人员回复解释说,查询字符串格式将配置应用于客户端,而其他格式将其应用于服务器。

我的问题是,有没有一种方法可以不使用查询字符串来应用reload=true,我发现这种格式真的很难遵循并且很难跟踪。

最佳答案

浏览their documentation没有明确的支持。话虽如此,浏览their code看起来可以传递一个函数,该函数返回您当前传入的格式的数组,但是在测试中我无法生成它。另一种方法是定义并运行你的辅助函数。您可以使用这样的助手:

function buildEntries(entries) {
  return entries.map(function(entry) {
    if (typeof entry === 'object') {
      var options = '?';
      if (entry.options) {
        for (var option in entry.options) {
          if (entry.options.hasOwnProperty(option)) {
            options += option + '=' + entry.options[option];
          }
        }
      }
      return entry.base + options.slice(0, -1);
    }
    // In all other cases
    return entry;
}

然后像下面的完整示例一样使用它:

var webpack = require('webpack');

function buildEntries(entries) {
  return entries.map(function(entry) {
    if (typeof entry === 'object') {
      var options = '?';
      if (entry.options) {
        for (var option in entry.options) {
          if (entry.options.hasOwnProperty(option)) {
            options += option + '=' + entry.options[option];
          }
        }
      }
      return entry.base + options.slice(0, -1);
    }
    // In all other cases
    return entry;
}

module.exports = {
  context: __dirname,
  entry: buildEntries([
    {
      base: 'webpack-hot-middleware/client',
      options: {
        path: '/__webpack_hmr',
        timeout: 20000
      }
    },
    './client.js'
  ]),
  output: {
    path: __dirname,
    publicPath: '/',
    filename: 'bundle.js'
  },
  devtool: '#source-map',
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  ],
};

关于javascript - 是否可以在不使用查询字符串的情况下传递 webpack 条目配置选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42525699/

相关文章:

javascript resolveLocalFileSystemURL 触发成功和失败回调

javascript - 限制Javascript脚本互联网访问

javascript - jquery onclick 展开 div 并更改 span 内的文本

javascript - 在 Firebase 中是否可以查看正在监听哪些节点以及您是怎么做到的?

将 Spring bean 注入(inject) JSF Managed Beans

configuration - Monodroid : Where should I put configuration settings?

java - 如何使用HttpSecurity(Spring Security)应用角色?

webpack - 在 dotnet core 6 中替换了 UseWebpackDevMiddleware

javascript - ReactDOM.render 不接受 JSX

webpack - 集成 bazel 和 webpack