postcss.config.js 的 es6 中的 'module.exports = {};' 是怎样的?

How is the equivalent of 'module.exports = {};' in es6 for postcss.config.js?

我在 webapck2 中使用 postcss 加载器。加载程序需要一个配置文件 postcss.config.js。我不需要任何选择。这个问题评论 (https://github.com/akveo/ng2-admin/issues/604#issuecomment-271974780) 建议我可以简单地把它放在 postcss.config.js

module.exports = {};

但是当我 运行 webpack (webpack -p --config webpack.config.js) 时,我收到了这些错误消息

ERROR in ./~/postcss-loader!./~/css-loader?{"modules":true}!./~/less-loader!./app/scripts/components/forms/form.less
Module build failed: Unknown word (1:1)

> 1 | exports = module.exports = require("../../../../node_modules/css-loader/lib/css-base.js")();
    | ^
  2 | // imports
  3 | 

我认为这是因为我的 babel 加载器也适用于所有扩展名为 .js 的文件,并且 module.exports = {}; 可能没有被 babel 翻译好。

es6 中定义空模块导出的正确语法是什么?

如果我只是注释掉该行,我得到了同样的错误。

如果我将文件留空,然后 postcss 抱怨缺少配置文件:

ERROR in ./~/postcss-loader!./~/css-loader?{"modules":true}!./~/less-loader!./app/scripts/components/forms/form.less
Module build failed: Error: No PostCSS Config found in: /Users/antkong/dev/project/app/scripts/components/forms
    at Error (native)
    at /Users/antkong/dev/project/node_modules/postcss-load-config/index.js:51:26

我正在使用 postcss-loader 1.1.0 和 webpack 2.3.3

问题不在于配置,除非您先转译配置,否则您将无法使用 ES 模块。

您在 css-loader 之后应用了 postcss-loader,它生成了 JavaScript,但那是无效的 CSS,但这正是 postcss-loader 所期望的。 postcss-loader 应该在 css-loaderless-loader 之间。

您的 .less 规则如下所示:

{
  test: /\.less$/,
  use: [
    'style-loader',
    {
      loader: 'css-loader',
      options: {
        modules: true
      }
    },
    'postcss-loader',
    'less-loader'
  ]
}

或者如果您使用的是 extract-text-webpack-plugin:

{
  test: /\.less$/,
  use: ExtractTextPlugin.extract({
    fallback: 'style-loader',
    use: [
      {
        loader: 'css-loader',
        options: {
          modules: true
        }
      },
      'postcss-loader',
      'less-loader'
    ]
  })
}