【问题标题】:Bundle Webpack multi entry points into one file using file-loader使用文件加载器将 Webpack 多个入口点捆绑到一个文件中
【发布时间】:2018-09-27 22:49:00
【问题描述】:

我使用 webpack 配置,其中我使用文件路径数组作为入口点。也称为多主入口。这些文件不相互依赖,但我想捆绑它们。 js包就好了。 Webpack 创建一个包含所有 js 文件内容的 bundle js 文件。

但我也想捆绑我的 css 文件。它们也不相互依赖,因此在 css 代码中没有使用导入规则。只有多主 webpack 条目。为此,我使用文件加载器。但我最终会得到单独的文件,否则最后一个会覆盖第一个。

我的代码的简化

webpack({
  entry: [
    './jsFileA.js',
    './jsFileB.js',
    './cssFileA.css',
    './cssFileB.css'
  ],
  output: {
    path: './',
    filename: 'bundle.js'
  },
  module: {
    rules: [{
      test: /\.css$/,
      use: [{
        loader: css-loader
      }, {
        loader: style-loader
      }, {
        loader: 'file-loader',
        options: {
          name: 'bundle.css'
        }
      }]
    }]
  }
}, (error, stats) => {
  console.log(stats);
})

这将得到一个仅包含最后一个 css 文件的 css 的 bundle.css。第一个被第二个覆盖。如果我在 name: '[hash].css' 这样的文件名中使用 [hash],我最终会得到两个 css 文件。

所以看起来文件加载器没有捆绑多个主要入口点。这是文件加载器的工作方式吗?或者是否可以使用文件加载器并捆绑多个主要入口点?

【问题讨论】:

    标签: javascript css webpack webpack-file-loader


    【解决方案1】:

    对包使用 css-loader (https://github.com/webpack-contrib/css-loader)。由于 webpack 是 JS 模块打包器,它本身并不理解 CSS。

    【讨论】:

    • 我实际上使用 extract-loader、css-loader、sass-loader 和 postcss-loader 来打包 sass 文件。我只是稍微简化了代码。这不是我面临的问题,但为了清楚起见,让我将加载程序添加到我的示例代码中。我遇到的问题是,当我使用多个入口点并且这些入口点没有使用 @import 规则绑定在一起时,文件加载器不会捆绑它们。
    • 重点是 webpack.config.js 中的 entry 数组是为你的 JS 文件而不是你的 css 文件。您正在尝试做的是一种通过使用 webpack 将多个 css 文件连接成一个或两个。 Answer to Webpack 1.12: Bundle css files
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2019-10-19
    • 1970-01-01
    • 2016-12-08
    • 2017-07-31
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多