webpack简介
构建工具(基于Nodejs)node(v16)前端工程化。
环境搭建
创建一个空的package.json
npm init
webpack核心包(提供了API,插件)
npm i webpack -g
npm i webpack -D cnpm i webpack -g
cnpm i webpack -D
webpack命令行包(提供了很多命令)
npm i webpack-cli -g
npm i webpack-cli -D cnpm i webpack-cli -g
cnpm i webpack-cli -D
官方推荐的用于构建本地服务器的包
npm i webpack-dev-server -g
npm i webpack-dev-server -D cnpm i webpack-dev-server -g
cnpm i webpack-dev-server -D
判断webpack是否安装成功
webpack -v
 
 
webpack是基于NodeJs环境的,webpack工作
    • 官方推荐使用的配置文件:webpack.config.js
    • 在项目根目录创建src/main.js入口文件
 
 webpack.config.js配置文件
//从Node中引入path模块,path.resolve()/join()
const file = require('path)
 const HtmlWebpackPlugin = require('html-webpack-plugin')
 const { ProgressPlugin} = require('webpack')


module.exports{
//指定webpack工作模式(两种模式:开发模式(development),打包模式(production))
  mode:'development',
  //入口配置
  //entry:'./src/main.js'  //相对路径
  //entry:path,resolve(__dirname,'src/main.js')  //绝对路径
  entry:{
    app:file.resolve(__dirname,'src/main.js')
  },
  //出口配置
  output:{
    //指定打包结果的输出目录,默认是dist目录,只能使用绝对路径
    path:path.resolve(__dirname,'dist'),
    filename:'[name].[chunkhash:8].js'
    //每次打包时,
    clean:true
  },
  //本地服务配置
    devServer:{
        port:8088,  
        open:true   //项目启动成功,自动打开浏览器
    }

  plugins:[
    new HtmlWebpackPlugin({
      template:file.resolve(__dirname,'../','public/index.html'),
      //把js脚本注入在body前
      inject:'body',
      //指定打包成功后模板的名字
      filename:'index.html',
      //指定index.html的标题
      title:'沐沐',
      //指定图标路径
      favicon:file.resolve(__dirname,'../','public/index.html'),
    }),
      new ProgressPlugin({
        handler(percentage,message,...args){
          if(percentage == 1){
            console.log('100% 启动成功')
          }
        }
     }),
  ],
  module:{
    //定义模块编译规则和方法
    rules:[
      //当webpack工作时,遇到.js结尾的文件时,就使用babel-loader进行加载,交给@babel/*进行编译。得到es5代码。
      {test:/\.js$/,use:'babel-loader'}
    ]
  }
}

 注意:因为webpack有两种工作模式,为了让配置更加容易维护,所以我们分离环境。
 在 webpack --env 指定环境,在配置文件 module.exports = function(env) 接收环境变量。
对 webpack配置进行拆分(公共配置、开发环境配置、打包配置),再使用 webpack-merge合并配置
 
const { merge } = require('webpack-merge')

const config = require('./config/config')    //公共配置
const serve = require('./config/serve') //开发环境配置
const build = require('./config/build')  //打包配置 module.exports = function ( {development} ) {
return merge(config, development ? serve : build)
}
在webpack中,如何处理.js模块?
安装babel-loader,在公共配置中配置module
npm i babel-loader -D
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

最新文章

  1. [转]python问题:IndentationError:expected an indented block错误解决
  2. Wijmo 2016年蓝图
  3. 【Unity3D自学记录】判断物体是否在镜头内
  4. LGLAlertView 提示框
  5. boost构造,解析json
  6. AsyncTask的使用方法和理解
  7. 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈
  8. Hadoop源代码分析【IO专题】
  9. 《A First Course in Probability》-chaper5-连续型随机变量-基本概念
  10. mysql_【MySQL】常见的mysql 进程state
  11. Oracle listener服务启动后又停止的解决方案
  12. “selection does not contain a main type”解决方法
  13. Maven工程的POM继承
  14. C++和python的变量对比
  15. C/C++文件输入输出操作——FILE*、fstream、windowsAPI
  16. springmvc中同步/异步请求参数的传递以及数据的返回
  17. 了解 Azure VM 的系统重启
  18. 一个爬取https和http通用的工具类(JDK自带的URL的用法)
  19. .Net HttpClient form-data格式请求
  20. 说说application/x-www-form-urlencoded和application/json的区别

热门文章

  1. Cocos---监听、触摸事件、坐标系转换
  2. 149_1秒获取Power BI Pro帐号
  3. 从零搭建react+ts组件库(封装antd)
  4. 怎样生成分布式的流水ID
  5. 从零开始构建并编写神经网络---Keras【学习笔记】[1/2]
  6. React简单教程-4.1-hook
  7. 关于python导入数据库excel数据时出现102, b"Incorrect syntax near '.15562'.DB-Lib error message 20018, severity 1的问题总结
  8. 开始讨论离散型随机变量吧!《考研概率论学习之我见》 -by zobol
  9. rosbag遍历数据出错:(unicode error) 'utf-8' codec can't decode byte 0xcd in position 31: invalid continuation byte
  10. Vscode个性化设置:让一个小萌妹陪你敲代码