CSS相关
less
Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。
sass
Sass 是成熟、稳定、强大的 CSS 扩展语言。
stylus
富于表现力、动态的、健壮的 CSS
style-loader
把编译后的css放到style标签里,然后插入到html中
建议
建议将style-loader与css-loader结合使用
- npm安装地址:https://www.npmjs.com/package/style-loader
- webpack使用:https://www.webpackjs.com/loaders/style-loader/
webpack使用的是compose方式,所以loader的加载顺序是 从右到左
- compose: require("style-loader!css-loader!sass-loader!./my-styles.sass")
- pipe: require("./my-styles.sass!sass-loader!css-loader!style-loader")
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
],
},
};
css-loader
css-loader允许在js中能过import/require引入.css文件。
- npm安装地址:https://www.npmjs.com/package/css-loader
- webpack使用:https://www.webpackjs.com/loaders/css-loader/
import home from 'home.css';
less-loader
less加载器,用于编译less到css
- npm安装地址:https://www.npmjs.com/package/less-loader
- webpack使用:https://www.webpackjs.com/loaders/less-loader/
module.exports = {
...
module: {
rules: [{
test: /\.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
}]
}]
}
};
sass-loader
sass加载器,用于编译sass到css
- npm安装地址:https://www.npmjs.com/package/sass-loader
- webpack使用:https://www.webpackjs.com/loaders/sass-loader/
module.exports = {
...
module: {
rules: [{
test: /\.scss$/,
use: [{
loader: "style-loader" // 将 JS 字符串生成为 style 节点
}, {
loader: "css-loader" // 将 CSS 转化成 CommonJS 模块
}, {
loader: "sass-loader" // 将 Sass 编译成 CSS
}]
}]
}
};
postcss
postcss
PostCSS是一个处理css的插件平台,可以在上面跑各种强大的插件。
- npm安装地址:https://www.npmjs.com/package/postcss
- git文档介绍:https://github.com/postcss/postcss#usage
- css88介绍:https://www.css88.com/archives/7317
创建postcss.config.js
module.exports = {
plugins: [
require('precss'),
require('autoprefixer')
]
}
postcss插件
- autoprefixer
为 CSS 中的属性添加浏览器特定的前缀
- cssnext
cssnext 插件允许开发人员在当前的项目中使用 CSS 将来版本中可能会加入的新特性。cssnext 负责把这些新特性转译成当前浏览器中可以使用的语法。 cssnext 中已经包含了对 Autoprefixer 的使用,因此使用了 cssnext 就不再需要使用 Autoprefixer。
- postcss-assets
插件用来处理图片和 SVG。在 CSS 声明中引用图片时,可以使用 resolve 加上图片路径的形式,如“resolve(‘logo.png’)”。
- cssnano
这个插件通过移除注释、空白、重复规则、过时的浏览器前缀以及做出其他的优化来工作,一般能减少至少 50% 的大小。还有很多其它选择,但 cssnano 是其中最好的一个。
- postcss-sprites
postcss-sprites 将扫描你CSS中使用的所有图像,自动生成优化的 Sprites 图像和 CSS Sprites 代码。
postcss-loader
postcss加载器
- npm安装地址:https://www.npmjs.com/package/postcss
- webpack使用:https://www.webpackjs.com/loaders/postcss-loader/
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader', 'postcss-loader'],
},
],
},
};
postcss-flexibility
postcss插件,flex语法浏览器兼容,PostCSS plugin for Flexibility polyfill
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: [
require('postcss-flexibility')
]
}
}
],
},
],
},
};
postcss-flexbugs-fixes
postcss插件,修复flex不同写法可能产生的bug
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: [
require('postcss-flexbugs-fixes')
]
}
}
],
},
],
},
};
postcss-preset-env
PostCSS Preset Env允许您将现代CSS转换为大多数浏览器都能理解的内容,根据目标浏览器或运行时环境确定所需的腻子脚本(polyfill)。
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: (loader) => [
require('postcss-preset-env')({
autoprefixer: {
flexbox: 'no-2009',
},
stage: 3,
})
]
}
}
],
},
],
},
};
autoprefixer
用于给css属性加浏览器前缀
- npm安装地址:https://www.npmjs.com/package/autoprefixer
- browserslist:https://github.com/browserslist/browserslist
::-webkit-input-placeholder {
color: gray;
}
:-ms-input-placeholder {
color: gray;
}
::-ms-input-placeholder {
color: gray;
}
::placeholder {
color: gray;
}
mini-css-extract-plugin
这个插件将CSS提取到单独的文件中。它为每个包含CSS的JS文件创建一个CSS文件。它支持CSS和SourceMaps的随需应变加载。
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "[name].css",
chunkFilename: "[id].css"
})
],
module: {
rules: [
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
// by default it use publicPath in webpackOptions.output
publicPath: '../'
}
},
"css-loader"
]
}
]
}
}
optimize-css-assets-webpack-plugin
它将在webpack构建期间搜索CSS资源,并将优化\最小化CSS(默认情况下它使用cssnano,但可以指定定制的CSS处理器)。
// ...
const optimizeCss = require('optimize-css-assets-webpack-plugin');
// ...
plugins: [
new optimizeCss()
]
isomorphic-style-loader
Webpack的CSS样式加载器,它的工作原理类似于样式加载器,但针对关键路径CSS呈现进行了优化,并且在同构应用程序的上下文中工作得非常好。 它为样式对象提供了两个辅助方法- . _insertcss()(将CSS注入DOM)和. _getcss()(返回CSS字符串)。
TIP
isomorphic: 同构的
module.exports = {
/* ... */
module: {
rules: [
{
test: /\.css$/,
use: [
'isomorphic-style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1
}
},
'postcss-loader'
]
}
]
}
/* ... */
};