zoukankan      html  css  js  c++  java
  • 基于webpack实现多html页面开发框架二 css打包、支持scss、文件分离

    本节主要介绍webpack打包的时候CSS的处理方式

    一、解决什么问题

         1、CSS打包

         2、CSS处理浏览器兼容

         3、SASS支持

         4、CSS分离成单独的文件

    二、创建目录结构

      

     

    创建项目目录结构:参照上图创建即可

    三、需要安装的包

      style-loader:将 JS 字符串生成为 style 节点;

          css-loader: 将 CSS 转化成 CommonJS 模块;  这两个合到一个命令:npm install --save-dev style-loader css-loader

      postcss-loader:处理浏览器兼容;命令:npm install --save-dev  postcss-loader autoprefixer postcss

      extract-text-webpack-plugin:将CSS分离到单独的文件;因webpack4.0以上不支持,所以需要安装next版本,命令:npm install --save-dev extract-text-webpack-plugin@next  

      html-webpack-plugin:根据模板生成文件,插入.js或.css文件;命令:npm install --save-dev html-webpack-plugin

    四、webpack配置

      1、首先在根目录下新建webpack.config.js文件;

       代码如下:

     1 const path=require('path');
     2 
     3 const extractTextPlugin = require("extract-text-webpack-plugin");
     4 const HtmlWebpackPlugin = require('html-webpack-plugin')
     5 
     6 module.exports={
     7     //配置多个入口
     8     entry:{
     9         'index':'./src/pages/index/index.js',
    10         'home':'./src/pages/home/index.js',
    11     },
    12     output:{
    13         //__dirname node.js的一个全局环境变量,用于指向当前执行脚本(dirname.js)所在的目录路径,而且是绝对路径
    14         path: path.resolve(__dirname, 'dist'),
    15         // 多入口打包后的文件名
    16         publicPath: '/',
    17         filename: 'assets/js/[name].[hash:8].js',
    18     },
    19     module: {
    20              rules: [
    21                {
    22                  test: /.(css|scss|sass)$/,
    23                  use: extractTextPlugin.extract({
    24                     fallback: "style-loader",// 将 JS 字符串生成为 style 节点,不打包成单独文件
    25                     use: [
    26                         "css-loader", // 将 CSS 转化成 CommonJS 模块
    27                         "sass-loader", // 将 Sass 编译成 CSS
    28                         "postcss-loader"], //autoprefixer postcss处理浏览器兼容
    29                     // css中的基础路径
    30                     publicPath: "/"
    31                 })
    32                }
    33              ]
    34            },
    35            plugins: [
    36             new extractTextPlugin({
    37                 // filename: 'css/[name].[hash:8].min.css',
    38                 filename: path.posix.join('assets', '/css/[name].[hash:8].min.css'),
    39             }),
    40             new HtmlWebpackPlugin({
    41                 title:'多页面开发框架',
    42                 template: './src/pages/index/index.html', // 源模板文件
    43                 filename: './index/index.html', // 输出文件【注意:这里的根路径是module.exports.output.path】
    44                 showErrors: true,
    45                 inject: 'true',          //所有JavaScript资源插入到body元素的底部
    46                 chunks: ["common",'index'] //配置写入哪些js和css
    47             }),
    48             new HtmlWebpackPlugin({
    49                 title:'多页面开发框架',
    50                 template: './src/pages/home/index.html', // 源模板文件
    51                 filename: './home/index.html', // 输出文件【注意:这里的根路径是module.exports.output.path】
    52                 showErrors: true,
    53                 inject: 'true',          //所有JavaScript资源插入到body元素的底部
    54                 chunks: ["common",'home'] //配置写入哪些js和css
    55             })
    56           ],
    57 }

       2、增加postcss.config.js配置文件;

      代码如下:  

    1 module.exports = {
    2     plugins: [
    3         require('autoprefixer')({overrideBrowserslist: ['> 0.15% in CN']})// 自动添加css前缀
    4     ]
    5   }

      配置文件注释写的很清楚,大家可以自己尝试一下哈~~!

    五、打包完的目录结构

      

    注意:当入口没有定义为多个时,CSS文件会始终合并成一个main文件 

     源码目录:https://github.com/James-14/webpack4_multi_page_demo

    写的不对之处请大家批评指正~~~~!!!!!! 

     

    文章原创,转载请注明出处,谢谢!

     

     

  • 相关阅读:
    用Visual C#创建Windows服务程序(转)
    输入字符串的格式不正确(异常详细信息: System.FormatException: 输入字符串的格式不正确。)
    pv操作二
    双进程struct sigaction中mask阻塞信号
    pv操作一
    sigprocmask
    共享内存二
    面向接口编程
    类之间的几种关系
    sigaction函数一
  • 原文地址:https://www.cnblogs.com/lisong/p/11908027.html
Copyright © 2011-2022 走看看