webpack

收藏

一、webpack

    模块化打包工具

二、安装webpack

    2.1 先全局安装

        cnpm install webpack -g

        cnpm install webpack-cli -g

    2.2 测试版本

        webpack -v

        webpack-cli -v

三、简单用一下webpack

    webpack==》本身之前是打包js

        如果要打包:html 、css ... 需要借助一些东西

    1. 进入项目目录,随便创建一个js文件

        src/index.js

    2. 在该目录中下载webpack

        cnpm install webpack -S

    3. 在终端执行:webpack命名就会打包成功


一、入口

    默认:src/index.js

二、出口

    默认:dist/main.js

********************************************************************

默认配置

var path = require('path');
module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js',
  },
};

一、多文件打包成一个文件 

    问题:多个入口文件 ===》 单文件出口

    解决:entry: ['./src/a.js','./src/b.js']

二、多文件打包成多文件

    问题:多个入口文件 ===》 多文件出口

    解决:entry: {

            a:'./src/a.js',

            b:'./src/b.js'

        }

一、loader是什么

    webpack 只能理解 JavaScript 和 JSON 文件,这是 webpack 开箱可用的自带能力。loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效 模块,以供应用程序使用,以及被添加到依赖图中。

二、loader的配置

    写法:

        module: {
            rules: [{ 
                test: /\.css$/, 
                use: ['style-loader','css-loader']
            }]
        }

    1、test 属性,识别出哪些文件会被转换。

    2、use 属性,定义出在进行转换时,应该使用哪个 loader。

    ****一定要记住下载loader

==================================================

插件:html-webpack-plugin 

    ***参考网站:https://www.cnblogs.com/wonyun/p/6030090.html

使用步骤:

    1. 下载

        cnpm install html-webpack-plugin -S

    2. 引入

        var HtmlWebpackPlugin = require('html-webpack-plugin');

    3. 配置

        plugins: [

            new HtmlWebpackPlugin()

        ]

    4. 参数说明

        4.1 指定模版页面

            template:'./src/index.html'

        4.2 修改默认输出文件名

            filename:'xx.html'

        4.3 允许插入到模板中的一些chunk

            chunks:['jquery','xx']

        4.4 配置不允许注入的thunk

            excludeChunks:['xx']

    5. 多页面打包

        需要创建多个new HtmlWebpackPlugin

一、加载图片的loader ==> file-loader

    {
        test: /\.(png|jpg|jpeg|gif)$/, 
        use: [{
            loader:'file-loader',
            options:{
              esModule:false,
              outputPath:'img/'
            }
        }]
    }

二、让html支持图片的loader  ==>  html-withimg-loader

    {
        test: /\.html$/, 
        use: 'html-withimg-loader'
    }
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: {
        index:'./src/index.js',
        jquery:'./src/jquery.js',
        xx:'./src/xx.js'
    },
    output: {
        path: path.resolve(__dirname, 'dist')
      },
    module: {
        rules: [{ 
            test: /\.css$/, 
            use: ['style-loader','css-loader']
          },
      {
        test: /\.(png|jpg|jpeg|gif)$/, 
        use: [{
            loader:'file-loader',
            options:{
              esModule:false,
              outputPath:'img/'
            }
        }]
      },
      {
        test: /\.html$/, 
        use: 'html-withimg-loader'
      }]
    },
    plugins: [
        new HtmlWebpackPlugin({
            //指定模版页面
            template:'./src/index.html',
            //修改默认输出文件名
            filename:'index.html',
            //配置不允许注入
            excludeChunks:['xx']
        }),
        new HtmlWebpackPlugin({
            //指定模版页面
            template:'./src/xx.html',
            //修改默认输出文件名
            filename:'xx.html',
            chunks:['jquery','xx']
        })
    ]
};

添加字体图标

    {
        test: /\.(eot|svg|ttf|woff|woff2)$/, 
        use: 'file-loader?name=./fonts/[name].[ext]'
    }

压缩打包css

    1. 单独抽离css文件

        1.1 下载插件: mini-css-extract-plugin

        1.2 引入插件:

            var MiniCssExtractPlugin = require('mini-css-extract-plugin');

        1.3 修改loader:

{ 
     test: /\.css$/, 
     use: [MiniCssExtractPlugin.loader,'css-loader']
}

        1.4 使用插件

plugins:[
     new MiniCssExtractPlugin()
]================》
//分离css
        new MiniCssExtractPlugin({
          filename:'./css/[name].css',
        }),

    2. 压缩css文件

        插件: optimize-css-assets-webpack-plugin

plugins:[
        //压缩css
        new OptimizeCssAssetsWebpackPlugin()
]
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
var OptimizeCssAssetsWebpackPlugin= require('optimize-css-assets-webpack-plugin');
module.exports = {
    entry: {
      index:'./src/index.js',
      jquery:'./src/jquery.js',
      xx:'./src/xx.js'
    },
    output: {
      path: path.resolve(__dirname, 'dist')
    },
    module: {
      rules: [
      { 
        test: /\.css$/, 
        use: [MiniCssExtractPlugin.loader,'css-loader']
      },
      {
        test: /\.(png|jpg|jpeg|gif)$/, 
        use: [{
            loader:'file-loader',
            options:{
              esModule:false,
              outputPath:'img/'
            }
        }]
      },
      {
        test: /\.(eot|svg|ttf|woff|woff2)$/, 
        use: 'file-loader?name=./fonts/[name].[ext]'
      },
      {
        test: /\.html$/, 
        use: 'html-withimg-loader'
      }]
  },
  plugins: [
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/index.html',
          //修改默认输出文件名
          filename:'index.html',
          //配置不允许注入
          excludeChunks:['xx']
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/xx.html',
          //修改默认输出文件名
          filename:'xx.html',
          chunks:['jquery','xx']
        }),
        //分离css
        new MiniCssExtractPlugin({
          filename:'./css/[name].css',
        }),
        //压缩css
        new OptimizeCssAssetsWebpackPlugin()
    ]
};

===================================

项目打包的步骤----------自写版

1、以index.html为例,把index.html中引入的css、js文件全部删除了,然后创建index.js文件

import '../css/style.css'......引入css文件

。。。。。。。。。。。。。。。。。。。。。具体不描述

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
var OptimizeCssAssetsWebpackPlugin= require('optimize-css-assets-webpack-plugin');
module.exports = {
    entry: {
      index:'./src/js/index.js',
      about:'./src/js/about.js',
      curriculum:'./src/js/curriculum.js',
      product:'./src/js/product.js',
      student:'./src/js/student.js',
      jquery:'./src/js/jquery-1.11.min.js',
      swiper:'./src/js/swiper-bundle.min.js',
      popup:'./src/js/jquery.popup.min.js'
    },
    output: {
      path: path.resolve(__dirname, 'dist')
    },
    module: {
      rules: [
      { 
        test: /\.css$/, 
        use: [MiniCssExtractPlugin.loader,'css-loader']
      },
      {
        test: /\.(png|jpg|jpeg|gif)$/, 
        use: [{
            loader:'file-loader',
            options:{
              esModule:false,
              outputPath:'img/'
            }
        }]
      },
      {
        test: /\.(eot|svg|ttf|woff|woff2)$/, 
        use: 'file-loader?name=./fonts/[name].[ext]'
      },
      {
        test: /\.html$/, 
        use: 'html-withimg-loader'
      }]
  },
  plugins: [
        new webpack.ProvidePlugin({
          $:'jquery',
          jQuery:'jquery',
          'window.jQuery':'jquery'
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/index.html',
          //修改默认输出文件名
          filename:'index.html',
          chunks:['index','jquery','swiper','popup']
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/about.html',
          //修改默认输出文件名
          filename:'about.html',
          chunks:['about','jquery']
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/curriculum.html',
          //修改默认输出文件名
          filename:'curriculum.html',
          chunks:['curriculum','jquery','swiper']
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/product.html',
          //修改默认输出文件名
          filename:'product.html',
          chunks:['product']
        }),
        new HtmlWebpackPlugin({
          //指定模版页面
          template:'./src/student.html',
          //修改默认输出文件名
          filename:'student.html',
          chunks:['student','jquery']
        }),
        //分离css
        new MiniCssExtractPlugin({
          filename:'./css/[name].css',
        }),
        //压缩css
        new OptimizeCssAssetsWebpackPlugin()
    ]
};


评论(

您还未登录,请先去登录
表情
查看更多

相关作者

  • 获取点赞0
  • 文章阅读量264

相关文章

联系小鹿线

咨询老师

咨询老师

扫码下载APP