刷新CSS

加载CSS

在设置css前需要2个加载器loaders,安装npm i css-loader style-loader --save-dev

相关配置

  1. // libs/parts.js文件
  2. ...
  3. exports.setupCSS = function(paths) {
  4. return {
  5. module: {
  6. loaders: [
  7. {
  8. // 正则匹配文件名
  9. test: /\.css$/,
  10. // 先style在css,执行是先编译css,再设置style样式link到html中
  11. loaders: ['style', 'css'],
  12. // 包含的文件路径,还有exclude表示排除路径
  13. include: paths
  14. }
  15. ]
  16. }
  17. };
  18. }
  1. // webpack.config.js文件
  2. ...
  3. switch(process.env.npm_lifecycle_event) {
  4. case 'build':
  5. // config = merge(common, {});
  6. config = merge(
  7. common,
  8. parts.setupCSS(PATHS.app)
  9. );
  10. break;
  11. default:
  12. config = merge(
  13. common,
  14. parts.setupCSS(PATHS.app),
  15. ...
  16. );
  17. }
  18. module.exports = validate(config);

loaders组数中的执行顺序是从右到左,css处理css中@importurl声明,style处理js中的require声明,如果还有预处理器(sass,less)直接将loader加在后面。加载器是处理资源文件,它们可以链式调用。

设置初始化CSS

需要在使用的样式的js文件用require()进相关样式文件

  1. // app/main.css文件
  2. body {
  3. background: cornsilk;
  4. }
  1. // app/index.js文件
  2. require('./main.css');
  3. ...

最好是将样式entry与js的entry分开,后续会介绍

理解CSS作用域和CSS模块

通过reuqire进来的样式文件会在html中生成一个style标签,所以它相当于全局可用。

通过style!css?modules(css loader另一种配置写法)方式能够让require只在当前模块生效。如果需要样式全局有效,需要写成:global(body) { ... }

如果不用moulde参数,需要:local(.redButton) {background: red;}实现局部模块有效


<<上一节:自动刷新浏览器 >>下一节:启用Sourcemaps