Webpack 2如何处理@import语句?

时间:2016-11-27 17:10:57

标签: reactjs webpack

我一直在学习如何使用webpack设置reactjs项目。

所以我试图让这个项目000-landing-page运行webpack配置。我想使用extract-text-webpack-plugin。

但是在css文件中有import语句;

@import "https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900";
@import "https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"; 

这些行会导致错误

  

“意外字符@您可能需要一个合适的加载器来处理   此文件类型为“

实际上异常很明显,但我找不到合适的加载器。我已经安装了html,文件,url加载器并尝试了一些配置,但无法完成它。

这些是我的css和scss加载器

 {
          test: /\.css$/,
          include: [ path.resolve(__dirname, "/node_modules/")],
          loader: ExtractTextPlugin.extract({
          fallbackLoader: 'style-loader',
           loader: [
           'css-loader',
            'postcss-loader',
          ],
          })
        },
        {
            test: /\.scss$/,
            include: [ path.resolve(__dirname, "/node_modules/")],
            loader: ExtractTextPlugin.extract({
            fallbackLoader: 'style-loader',
             loader: [
               'postcss-loader',
               'sass-loader',
             'css-loader',
            ],
            }),
        }

2 个答案:

答案 0 :(得分:1)

我理解装载机顺序是从右到左。这将使scss的loader数组成为:

['css-loader', 'postcss-loader', 'sass-loader']

这是因为它本质上是一个组合函数,即 css(postcss(sass(file)))

答案 1 :(得分:1)

它与@symbol无关。由于是webpack的初学者,我错过了一点点。

如果使用include包含任何内容:[]则表示包含所有文件

如果使用include包含某些内容:[file x]则表示除文件x以外的所有文件。

因为我添加了“include:[path.resolve(__ dirname,”/ node_modules /“)],”它只包含node_modules而不是我的src文件夹。