webpack了解笔记

了解知识:
      一般项目中存在两个必要文件夹 src文件夹和dist文件夹,src文件夹用于存放开发的代码,dist文件夹用于存放我们打包好后的文件
1.什么是webpack?
      webpack是一个前端模块化打包工具,能够帮助我们处理模块间的各种复杂关系,它在打包的过程中可以对资源进行处理,比如压缩图片,将scss转换为css,将es6语法转化为es5语法,将typescript转化为javascript等.

2.webpack和grunt/gulp有什么不同
      grunt/gulp更加强调的是前端流程的自动化,模块化不是它的核心
      webpack更加强调模块化开发管理,而文件压缩合并,预处理等功能只是它附带的功能

webpack起步
3.安装webpack
  全局安装webpack
      安装webpack需要安装node环境,然后通过npm install -g webpack 命令安装webpack
  局部安装webpack
      进入需要安装的目录下面,运行命令
          npm install webpack  --save-dev

4.为什么全局安装webpack后,还需要局部安装webpack(在文件根目录中安装)
      因为在终端直接执行webpack命令,使用的是全局安装的webpack;当在package.json文件中定义了scripts脚本时,其中包含了webpack命令,而这里使用的就是局部webpack

5.普通的webpack进行打包命令(不推荐使用)
      在终端中运行命令
          webpack 需要打包的文件路径 打包后存放文件的路径

6.通过webpack进行vue,js,css,less,图片,将es6语法转为es5语法等相关功能的打包配置(推荐使用)
      (1)根目录,先在终端通过 npm init -y 命令初始化一个package.json文件,并且安装局部webpack
      (2)根目录,新建一个 webpack.config.js文件,安装相关需要使用的依赖
            npm install style-loader --save-dev
            npm install --save-dev css-loader
            npm install --save-dev less-loader less
            npm install --save-dev url-loader
            npm install --save-dev file-loader
            npm install babel-loader babel-core babel-preset-env
            npm install vue --save
            npm install vue-loader vue-template-compiler --save-dev
      (3)在该webpack.config.js文件中进行信息配置
                  //导入相关模块
                  const path = require('path');

                  //进行配置webpack打包js相关配置
                  module.exports = {
                    entry: './src/js/main.js',
                    output: {
                      path: path.resolve(__dirname, 'dist'),
                      filename: 'moudle.js',
                      publicPath: 'dist/'
                    },

                    //进行配置webpack打包css样式的信息
                    module: {
                      rules: [{
                          test: /\.css$/,
                          use: ['style-loader', 'css-loader']
                        },
                        //进行配置webpack打包less样式的信息
                        {
                          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
                          }]
                        },
                        //进行配置webpack打包图片样式的信息
                        {
                          test: /\.(png|jpg|gif)$/,
                          use: [{
                            loader: 'url-loader',
                            options: {
                              //当加载的图片小于limit时,会自动将图片编译为base64字符串的形式
                              limit: 8192,
                              name: 'img/[name].[hash:8].[ext]'
                            }
                          }]
                        },
                        //配置将es6转为es5
                         {
                          test: /\.js$/,
                          exclude: /(node_modules|bower_components)/,
                          use: {
                            loader: 'babel-loader',
                            options: {
                              presets: ['@babel/preset-env']
                            }
                          }
                        },
                        {
                          test:/\.vue$/,
                          use:['vue-loader']
                        }
                      ]
                    },
                    //配置Vue相关
                    resolve:{
                      alias:{
                        'vue$':'vue/dist/vue.esm.js'
                      }
                    }
                  }
      (4)打开package.json文件,在script脚本属性中添加新的命令
          "build":"webpack"
      (4)在终端中输入npm run build 就可以进行打包了

7. 在Vue实例对象中,如果同时存在el属性和template属性,那么在渲染页面时,会将template属性中的html模板内容覆盖掉el属性控制的实例区域.   

8.webpack核心插件plugin
      loader主要用于转换某些类型的模块,它是一个转换器.而plugin是插件,它是对webpack本身的扩展,是一个扩展器.
      使用过程:
            1.通过npm安装相应的plugin插件
            2.在webpack.config.js文件中的plugins属性中配置插件
                (1)版权声明插件 在webpack.config.js文件中,引入webpack模块,然后配置module.exports={
                  ...
                  plugins:[
                    new webpack.BannerPlugin('最终版权归xxx所有');//webpack自带,不需要安装
                  ]
                }
                (2)打包html文件的plugin插件
                   安装: npm install html-webpack-plugin --save-dev
                   配置:
                    plugins:[
                      new webpack.BannerPlugin('最终版权归xxx所有'),//webpack自带,不需要安装
                      new htmlWebpackPlugin({
                        template:'index.html'
                      }),
                    ]
                    删除output配置中的publicPath属性.
                (3)压缩打包后的js文件插件
                    安装: npm install uglifyjs-webpack-plugin@1.1.1 --save-dev
                    配置webpack.config.js:
                        导入核心模块
                        const uglifyJsPlugin=require('uglifyjs-webpack-plugin')
                          plugins:[
                      new webpack.BannerPlugin('最终版权归xxx所有'),//webpack自带,不需要安装
                      new htmlWebpackPlugin({
                        template:'index.html'
                      }),
                      new uglifyJsPlugin()
                    ]

9.webpack搭建本地服务器
    安装:npm install --save-dev webpack-dev-server@2.9.1 
    配置webpack.config.js文件属性devserver
        devServer:{
          contentBase:'./dist',
          inline:true
        }
    配置package.json文件的scripts脚本属性
        "dev":"webpack-dev-server  --open"
    运行服务器命令
          npm run dev


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值