Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网页包输出缓冲注入CSS-如何防止?_Javascript_Css_Webpack_Sass_Webpack 4 - Fatal编程技术网

Javascript 网页包输出缓冲注入CSS-如何防止?

Javascript 网页包输出缓冲注入CSS-如何防止?,javascript,css,webpack,sass,webpack-4,Javascript,Css,Webpack,Sass,Webpack 4,编辑:此问题现在为空(至少对我而言)。我发现了升级故障。 网页包v4.31.0 我不是大师。我试图升级到v5,但一切都坏了。我是在最后期限,所以请限制建议,以v4如果有可能的话 考虑到编译SCSS文件的webpack.config.js: // const js removed for simplicity const css = { entry: { 'frontend.css': `${__dirname}/src/scss/frontend.scss`, }, out

编辑:此问题现在为空(至少对我而言)。我发现了升级故障。

网页包v4.31.0

我不是大师。我试图升级到v5,但一切都坏了。我是在最后期限,所以请限制建议,以v4如果有可能的话

考虑到编译SCSS文件的
webpack.config.js

// const js removed for simplicity

const css = {
  entry: {
    'frontend.css': `${__dirname}/src/scss/frontend.scss`,
  },
  output: {
    path: `${__dirname}/css`,
    filename: '[name]'
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        exclude: /node_modules/,
        // module chain executes from last to first?
        use: [
          {
            loader: 'file-loader',
            options: { name: '[name].css', outputPath: '../css/' }
          },
          // how to minimize?
          { loader: "remove-comments-loader" },
          { loader: 'extract-loader' },
          { loader: 'css-loader', options: { url: false, sourceMap: false } },
          { loader: 'resolve-url-loader' },
          { loader: 'sass-loader', options: { sourceMap: false } }
        ]
      },
    ]
  }
};

// Return array of configurations
module.exports = function () {
  return exportModules( [css] );
};

/**
 * Merge filetype configs with shared config and return them as an array of objects.
 * @param objs
 * @return {Array}
 */
const exportModules = ( objs ) => {
  const objArr = [];
  for ( let i = 0; i < objs.length; i++ ) {
    objArr.push( {
      ...config(),
      ...objs[i]
    } );
  }
  return objArr;
};

// Shared config options
const config = function () {
  return {
    mode: 'development',
    stats: {
      // is there a preset that does this?
      colors: true,
      hash: false,
      version: false,
      timings: false,
      assets: false,
      chunks: false,
      modules: false,
      reasons: false,
      children: false,
      source: false,
      errors: false,
      errorDetails: false,
      warnings: false,
      publicPath: false
    }
  }
};

这种行为是不一致的,因为有时输出不同的语句,有时根本没有。有没有办法在config对象中绕过此输出?我做错什么了吗?

在我看来,
exportModules
函数中可能存在错误。我不确定,尤其是我使用WebpackV5,但它可能无法正确合并,覆盖或复制一些共享配置

也许你应该使用webpack合并包来解决这个问题,然后它看起来像

/* Top of the file */
const { merge } = require('webpack-merge');

modules.export = merge(config(), css, js);

感谢Bart,我最终解决了升级问题,现在在v5上,试图找出拜占庭式的配置选项,这些选项似乎比v4有了很大的改变。我现在遇到了一个新问题,那就是在我的css输出目录中出现了一个神秘的.js文件。这不是一个交易破坏者;我完全可以忽略它。无论如何,谢谢你抽出时间。Webpack似乎是一个强大的工具,但试图找到有意义的例子来做我想做的事情却很困难。我知道其中的痛苦。最近,当我使用
迷你css提取插件
提取css条目时,webpack输出空js文件。看来这是唯一能持续多年的。有一个解决方法
/* Top of the file */
const { merge } = require('webpack-merge');

modules.export = merge(config(), css, js);