如何应用 `postcss-import` 配置的插件
How are `postcss-import` configured plugins applied
我刚刚开始专门将 PostCSS 与 Webpack 结合使用。当使用 postcss-import
内联外部样式表时,我看到它的选项允许我们配置插件和转换器以应用于导入的源,但我对如何将其与为主要配置的其他选项结合在一起感到有点困惑PostCSS 亚军。
例如,如果我想内联 URLs,我是否应该将 postcss-url
插件添加到 postcss-import
、PostCSS 运行器或两者(如果我的主样式表也有URL 参考)?
在 webpack 中定义 postcss 插件时,建议将 postcss-import
作为列表中的第一个插件。由于 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);
}
如果导入插件在 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
}
如果您先导入,它会内联导入的文件,然后进行自动前缀,这意味着导入的文件和原始文件都将自动添加前缀:
// 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);
}
所以这意味着您实际上不必在 postcss-import
插件的选项中再次添加插件。
我刚刚开始专门将 PostCSS 与 Webpack 结合使用。当使用 postcss-import
内联外部样式表时,我看到它的选项允许我们配置插件和转换器以应用于导入的源,但我对如何将其与为主要配置的其他选项结合在一起感到有点困惑PostCSS 亚军。
例如,如果我想内联 URLs,我是否应该将 postcss-url
插件添加到 postcss-import
、PostCSS 运行器或两者(如果我的主样式表也有URL 参考)?
在 webpack 中定义 postcss 插件时,建议将 postcss-import
作为列表中的第一个插件。由于 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);
}
如果导入插件在 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
}
如果您先导入,它会内联导入的文件,然后进行自动前缀,这意味着导入的文件和原始文件都将自动添加前缀:
// 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);
}
所以这意味着您实际上不必在 postcss-import
插件的选项中再次添加插件。