如何应用“postcss-import”配置的插件

Fil*_*vić 6 css webpack postcss

我刚刚开始将 PostCSS 与 Webpack 一起使用。当使用postcss-import内联外部样式表时,我看到它的选项允许我们配置要应用于导入源的插件和转换器,但我对它如何与为主 PostCSS 运行器配置的其他选项结合在一起有点困惑。

例如,如果我想内联 URL,我应该将插件添加postcss-urlpostcss-importPostCSS 运行程序还是两者(如果我的主样式表也有 URL 引用)?

sie*_*jck 11

postcss-import当你在 webpack 中定义 postcss 的插件时,建议在你的列表中创建第一个插件。由于postcss-import只是将 内联@import到文件的开头,因此之后定义的任何 postcss 插件都将应用于它。

例子:

(对于这个例子,我假设您使用一个postcss.config.js文件,如果您使用 webpack 1 格式的插件数组,则适用相同的逻辑)

// Header.css
@import 'button.css';

.foo {
    font-size: 3rem;
    transform:translateY(-10px);
}

// Button.css

.bar {
   transform:translateX(20px);
}
Run Code Online (Sandbox Code Playgroud)

如果导入插件位于 autoprefixer 之后,它将首先在文件上应用 autoprefixer 插件,然后再导入文件@import。因此,在导入文件时,前缀已经发生,输出将是:

// postcss.config.js
module.exports = {
  plugins: {
    'autoprefixer': {},
    'postcss-import': {}
  },
};

// output.css
.bar {
    transform: translateX(20px); // Prefixing hasn't happened on the imported file
}
.foo {
    font-size: 3rem;
    transform:translateY(-10px);
    -webkit-transform:translateY(-10px); // original file has been prefixed though
}
Run Code Online (Sandbox Code Playgroud)

如果您先导入,它将内联导入的文件,然后进行自动前缀,这意味着导入的文件和原始文件都将自动添加前缀:

// postcss.config.js
    module.exports = {
      plugins: {
        'postcss-import': {},
        'autoprefixer': {}
      },
    };

// output.css
.bar {
    transform: translateX(20px);
    -webkit-transform:translateX(20px); // Also prefixed now

}
.foo {
    font-size: 3rem;
    transform:translateY(-10px);
    -webkit-transform:translateY(-10px); 
}
Run Code Online (Sandbox Code Playgroud)

所以这意味着你实际上不必在postcss-import插件的选项中再次添加插件。