Webpack 为同一文件类型打包单独的加载程序链

Webpack 为同一文件类型打包单独的加载程序链,webpack,webpack-2,Webpack,Webpack 2,是否可以为同一加长件运行两个单独的装载机链条 在本例中,我希望运行一组加载程序来构建静态文件,另一组加载程序来编写不同的文件集(用于服务器端渲染) 但据他说,它似乎在同一条链中运行所有装载机,即使它们是在不同的规则中定义的 也许我还没有完全理解加载器,但是有没有办法让每组加载器(使用列表)独立运行?您可以在每个规则上使用正则表达式创建文件 在文档的“条件”部分,它们列出了这些属性可以接受的一些可能值。以下是一些我认为可以帮助您的: 字符串:要匹配输入,必须以提供的字符串开头。即。绝对目录路径,

是否可以为同一加长件运行两个单独的装载机链条

在本例中,我希望运行一组加载程序来构建静态文件,另一组加载程序来编写不同的文件集(用于服务器端渲染)

但据他说,它似乎在同一条链中运行所有装载机,即使它们是在不同的规则中定义的

也许我还没有完全理解加载器,但是有没有办法让每组加载器(使用
列表)独立运行?

您可以在每个规则上使用正则表达式创建文件

在文档的“条件”部分,它们列出了这些属性可以接受的一些可能值。以下是一些我认为可以帮助您的:

  • 字符串:要匹配输入,必须以提供的字符串开头。即。绝对目录路径,或文件的绝对路径
  • RegExp:它使用输入进行测试
  • 一个函数:它是用输入调用的,必须返回一个真实值才能匹配
我在一个项目中使用了RegExp方法,将特殊情况分离到一个特定的文件夹中。因此,在网页包配置中,我将文件夹包含在一组规则中,并从另一组规则中排除。例如:

{
  test: /\.p?css$/,
  include: /specific_folder/,
  use: ExtractTextPlugin.extract([ "css-loader", "postcss-loader" ])
},
{
  test: /\.p?css$/,
  exclude: /specific_folder/,
  use: [  ... ]
}

我找到了一个最适合你的箱子的装载机 . 此加载程序多次需要一个模块,每次加载一个不同的加载程序。与在多入口点中一样,最后一个项目的导出也会被导出

var multi = require("multi-loader");
{
    module: {
        loaders: [
            {
                test: /\.css$/,
                // Add CSS to the DOM
                // and
                // Return the raw content
                loader: multi(
                    "style-loader!css-loader!autoprefixer-loader",
                    "raw-loader"
                )
            }
        ]
    }
}
或者,您可以在require语句中使用内联加载器两次要求相同的文件,如

您可以将配置选项作为查询传递

此外,您还可以为加载程序名称和配置创建别名,并使用该别名,而不是每次这样编写加载程序名称和配置

在配置文件中

resolveLoader: {
  alias: {
    myLoader1: "style-loader!css-loader?modules", // and much more
    myLoader2: "xyz-loader!sass-loader?modules" // and much more
  }
}
进口时

import Styles from 'myLoader1!./styles.css';
import Styles from 'myLoader2!./styles.css';

理想情况下,我希望在每个文件中处理相同的文件。一次,生成一个CSS文件,另一次生成从JS引用的模块。如果它们有相同的条件,它会分别执行它们吗?或者只有一个输出(并且它们会被链接)具有相同的条件,我几乎可以肯定它的行为与无条件相同。我不确定我是否得到了你想要做的,但是如果你需要两个不同的输出,我想你需要两个入口点。和你的问题相似吗?是的,和那相似,谢谢!基本上,我希望通过ExtractTextPlugin运行代码,但也希望代码包含在构建中。这听起来好像只有一个入口点是不可能的。我还没有尝试过,但我会考虑创建一个自定义插件。手动连接到特定事件可能会使同一个文件执行两件事情成为可能。不久前,我遇到了输出缩小和未缩小文件的。可能会有帮助,因为您的用例听起来很相似,现在已不推荐使用归档回购,并且没有替代方案:(
resolveLoader: {
  alias: {
    myLoader1: "style-loader!css-loader?modules", // and much more
    myLoader2: "xyz-loader!sass-loader?modules" // and much more
  }
}
import Styles from 'myLoader1!./styles.css';
import Styles from 'myLoader2!./styles.css';