博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习webpack4 - 基础配置
阅读量:6238 次
发布时间:2019-06-22

本文共 2732 字,大约阅读时间需要 9 分钟。

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

基础配置

安装

yarn init -y 初始化项目yarn add webpack webpack-cli -D

尝试运行

step1: 新建src目录, 在src目录下新增一个index.js文件,并输入:console.log('丸子');

step2: 打开package.json文件,添加一个脚本:

"scripts": {   "build": "webpack" }

尝试运行一次:

npm run build

clipboard.png

打包成功了!当前目录结构为:

clipboard.png

当前目录中并没有webpack.config.js这个文件却还能打包成功?因为在webpack4中不必一定要有配置文件了,也不必一定要指定一个入口和出口才能打包成功。它会默认找到./src/index.js 作为默认入口点并且在 ./dist/main.js 中输出模块包,但是这样不是很灵活,因为名字之类的都指定了,那么怎么自己配置这些东西呢?

入口&出口配置

step1: 根目录下新建一个webpack.config.js文件

step2: 打开webpack.config.js文件,进行入口和出口配置:

let path = require('path');module.exports = {  entry: './src/index.js',  output: {    filename: 'bundle.js',    path: path.resovle(__dirname, 'dist')  }}

尝试运行一下:npm run build

clipboard.png

运行成功了。

当前目录结构为:

clipboard.png

两个配置:

  1. entry: 入口配置
    用来指定入口起点,默认./src,进入入口起点后,webpack会找出有哪些模块和库是入口起点直接和间接依赖的。
  2. output: 出口配置

    用来指定在哪里输出所创建的bundles,默认./dist,其中:

    • filename: 输出文件名称
    • path: 输出文件存放路径,该路径是绝对路径

上面结果中还看到有一个warning说mode没有设置,这个mode是模式,接下来配置下这个mode

多入口和多出口配置

module.exports = {  //...  // 多入口和多出口配置  entry: {    home: './src/index.js',    other: './src/other.js'  },  output: {    filename: '[name].js',    path: path.resolve(__dirname, 'dist')  },  //...}

这样就完成了多入口和多出口的配置,但是编译出的文件需要自动生成相应的html并且引入对应的js文件的时候改怎么处理呢?用chunks去区分,如下:

let HtmlWebpackPlugin = require('html-webpack-plugin')module.exports = {  //...  // 多入口和多出口配置  entry: {    home: './src/index.js',    other: './src/other.js'  },  output: {    filename: '[name].js',    path: path.resolve(__dirname, 'dist')  },  //插件配置  plugins: [    new HtmlWebpackPlugin({      template: './src/index.html', //原始文件      filename: 'index.html', //打包后的文件名称      hash: true, //hash      chunks: ['home']  //引入需要的那个对应的js的文件(多入口时用)    }),    new HtmlWebpackPlugin({      template: './src/other.html',       filename: 'other.html',      hash: true, //hash      chunks: ['other']     })  ]  //...}

这样就保证了编译后自动生成html文件能正确引用生成的js文件。

模式配置

mode(模式):分别是production(生产) 和 development(开发) 模式

方法一:打开webpack.config.js文件,配置mode

clipboard.png

方法二:打开package.json文件,配置脚本

clipboard.png

尝试运行,

npm run dev  //开发环境npm run build //生产环境

警告消失,结果如下:

clipboard.png

watch监控

项目中如果我们代码有改动,webpack就会实时监控并编译的话,开发就会舒服的多,实现方法如下:

module.exports = {  //...   //监控配置  watch: true,  watchOptions: {    poll: 1000, //每秒钟询问多少次    aggregateTimeout: 500, //防抖    ignored: /node_modules/ //忽略不需要监控的  },    //...}

(补充)启动本地服务

在本地开发的时候, 总是要自己在浏览器中打开文件,这样很不好, 那么怎么在本地开一个服务呢?

step1: 安装webpack-dev-server

yarn add webpack-dev-server -D

step2: 打开webpack.config.js文件,配置webServer

devServer: {  port: 3000, //端口号  progress: true, //进度条  contentBase: './dist', //指定目录运行服务  open: true //自动打开浏览器}

clipboard.png

step3: 打开package.json文件,更改下脚本

"scripts": {   "dev": "webpack --mode development && webpack-dev-server",   "build": "webpack --mode production" }

尝试运行:

npm run dev

成功!结果如下:

clipboard.png

此时浏览器会自动打开 :3000/

clipboard.png

转载地址:http://vgzia.baihongyu.com/

你可能感兴趣的文章
通过反射,获取有参数的构造方法并运行
查看>>
SQL Server中使用convert进行日期转换
查看>>
通过PHP获取文件创建与修改时间
查看>>
数据行转列实例
查看>>
vs2010 CWnd::CreateEx Warning: Window creation failed: GetLastErro
查看>>
php monolog 的写日志到unix domain socket 测试终于成功
查看>>
kernel笔记——定时器与时间管理
查看>>
PyDev:warning: Debugger speedups using cython not foun
查看>>
APScheduler(Python化的Cron)使用总结 定时任务
查看>>
原始套接字简单应用
查看>>
单引号、双引号和三双引号的区别
查看>>
Eclipse快捷键大全(转载)
查看>>
Ambari服务依赖关系图生成脚本
查看>>
命令模式
查看>>
通过简单的mdev -s自动装配/dev目录下的设备文件
查看>>
[转]模态对话框与非模态对话的几种销毁方法与区别
查看>>
管理对象空间——段
查看>>
Storm - Guaranteeing message processing
查看>>
I.MX6 sdio 设备注册及识别
查看>>
获取股票数据的2个简单方法
查看>>