learn-webpack4(五)


SCSS 提取和懒加载

使用 ExtractTextPlugin

基本的东西和上个 scss 的 demo 一样
不同的是需要用到使用 ExtractTextPlugin

const path = require("path");
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name].bundle.js",
    chunkFilename: "[name].chunk.js"
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          // 注意 1 不提取为单独样式的使用loader
          fallback: {
            loader: "style-loader"
          },
          use: [
            {
              loader: "css-loader",
              options: {
                minimize: true
              }
            },
            {
              loader: "sass-loader"
            }
          ]
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin({
      filename: "[name].min.css",
      allChunks: false // 注意 2 必须为fasle,否则会包含异步的css
    })
  ]
};

scss 引用和懒加载

在项目入口文件 app.js 中,针对 scss 懒加载,需要引入以下配置代码:

import "style-loader/lib/addStyles";
import "css-loader/lib/css-base";

剩下我们先设置背景色为红色,在用户点击鼠标后,懒加载 common.scss,使背景色变为绿色。剩余代码如下:

import "./scss/base.scss";

var loaded = false;
window.addEventListener("click", function() {
  if (!loaded) {
    //懒加载
    import(/* webpackChunkName: 'style'*/ "./scss/common.scss").then(_ => {
      // chunk-name : style
      console.log("Change bg-color of html");
      loaded = true;
    });
  }
});

我们需要在 html 代码中引入打包结果中的、非懒加载的样式(/dist/app.min.css)和 js 文件(/dist/app.bundle.js)。


文章作者: 沐雪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沐雪 !
评论
 上一篇
learn-webpack4(六) learn-webpack4(六)
Tree Shaking把没有用到的代码在打包的时候丢弃掉,依赖于 ed6 的模块系统 只需要配置 mode 为”production”,即可显式激活 UglifyjsWebpackPlugin 插件。现在默认就是激活的,不配置 mode
2017-10-16
下一篇 
learn-webpack4(四) learn-webpack4(四)
打包 css/scss通过 webpack 可以有以下几种方式1,将 css 通过 link 标签引入2,将 css 放到 style 标签里3,动态卸载和加载 css4, 先加载 css.transform 打包 csswebpack 配
2017-10-12
  目录