在反应应用程序的 webpack 配置中查询预设与加载程序

Posted

技术标签:

【中文标题】在反应应用程序的 webpack 配置中查询预设与加载程序【英文标题】:Queries presets vs loaders in webpack config in react app 【发布时间】:2016-07-09 15:59:34 【问题描述】:

现在我尝试将a library 包含到应用程序中,使用与 webpack 的反应。 这是我的 webpack 配置的一部分:

module: 
  loaders: [
    test: [/\.jsx$/,  /\.js$/],
    exclude: /(node_modules|bower_components)/,
    loader: 'babel',
    query: presets: ['react', 'es2015']
  ,
  
    test: /(\.scss|\.css)$/,
    loader: ExtractTextPlugin.extract('style', 'css?sourceMap&modules&importLoaders=1&localIdentName=[local]_[hash:base64:5]!postcss?sourceMap!sass!toolbox')
  ,
  
    test: /\.(png|jpg)$/,
    loader: 'url-loader?limit=8192'
  ]

但在库的描述中,还有另一种包含模块的方法:

module: 
loaders: [
  test:[/\.jsx$/,  /\.js$/],
  loaders: ['react-hot', 'babel?stage=0&loose[]=es6.modules'],
  include: [
    path.resolve(__dirname, "src"),
    path.resolve(__dirname, "node_modules/flash-notification-react-redux")
  ],
, 
  test: [/\.scss$/, /\.css$/],
  loader: 'css?localIdentName=[path]!postcss-loader!sass',
],,;

我们看不到“查询”,但我们看到的是“加载程序”而不是“加载程序”。我应该如何在配置中包含库?

谢谢。

【问题讨论】:

【参考方案1】:

在您的应用程序中包含库的最简单方法是要求或导入它。

如果你使用 commonjs 语法,你会这样做:

var React = require('react');

如果你使用的是 ES6 语法:

import React from 'react';

通过这样做,当 webpack 打包你的文件时,依赖项将被捆绑在一起。

loader 和 loader 之间的区别在于,对于 loader,只有一个 loader 会处理您的文件,而在使用 loader 时,您可以让不同的 loader 像管道一样处理文件。请注意,加载程序是从右到左执行的。

查询是一种将参数传递给加载程序的方法。你不能定义一个查询参数和多个加载器。

如果您需要将参数传递给加载器,并且需要为同一文件类型使用多个加载器,则可以通过为每个对象使用一个加载器来实现,如下所示:

module: 
    loaders: [
      
        test: /\.css$/,
        loader: 'style',
        query: 
      ,
      
        test: /\.css$/,
        loader: 'css',
        query: 
      
    ]
  

相同文件类型的加载器是从下到上执行的,所以上面的例子和这个是一样的:

module: 
    loaders: [
      
        test: /\.css$/,
        loaders: ['style',  'css']
      
    ]
  

【讨论】:

以上是关于在反应应用程序的 webpack 配置中查询预设与加载程序的主要内容,如果未能解决你的问题,请参考以下文章

如何实现 SASS 以与原始 webpack 做出反应?

Webpack es2015 用 React 摇树

多个错误 auth0 反应 apollo babel webpack

sh 配合Vue.js配置Webpack - 40.通过cmd创建.babelrc,并指定预设为ES2015

如何将我正在使用 webpack 构建的反应应用程序链接到 phpmyadmin 外部数据库并查询它而不在代码中显示我的数据库密码?

在反应中导入json文件,webpack配置错误