1.//项目初始化,生成package.json文件来管理项目
2.安装webpack所需要的依赖(npm/cnpm安装)

3.webpack.config.json配置文件
4.tsconfig.json ts的配置文件
5.修改package.json
6.npm run build 执行webpack
//成功
7.安装webpack插件:自动生成html文件
cnpm i -D html-webpack-plugin


8.webpack开发服务器:cnpm i -D webpack-dev-server
想在浏览器访问网站:服务器和项目有关联,当改动代码能自动重新构建,浏览器能自动刷新
相当于在项目里安装一个内置的服务器,可以让项目在这个服务器直接运行,可以根据项目的改变去自动刷新
//添加“start”命令,启动内置服务器,用谷歌浏览器打开页面
执行npm start命令,启动webpack内置服务器,自动弹出Chrom打开页面
//Live Reloading enabled.是实时更新的意思
9.CleanWebpackPlugin
编译的时候,不会删除原来的文件,编译新生成的文件会覆盖掉原来的文件
每次编译前会将dist目录先清空,然后新文件放进去,这样就可以确保dist文件夹里的文件都是最新的
这个插件和HTMLWebpackPlugin差不多,cnpm i -D clean-webpack-plugin,这条命令的作用就是清空dist目录下的文件


10.模块问题:
向外暴露一个变量,在别的地方引入这个,但是在webpack中不知道哪些文件可以作为模块使用
所以要做一个配置告诉webpack哪些文件可以作为模块使用

11.引入loader加载器(打包工具),让代码转化成更多版本,兼容更多浏览器
其中ts可以在tsconfig.json里面用target配置,编译转换成的es版本等等,但是这些仅仅是一些语法转换,有些功能复杂一点的(Promise……)是ts不具备的。
新语法转换成旧语法,将新的类、对象,在旧浏览器不支持的,可以通过一些方式让他支持
1)安装依赖:cnpm i -D @babel/core @babel/preset-env babel-loader core-js
@babel/preset-env预先设置环境,不同浏览器
babel-loader babel和webpack做结合
core-js 是js运行环境,模拟运行js环境,让老版本浏览器用到到新标准技术
2)修改配置
这个加载器也是要对test生效,对ts文件生效的,所以在use,换成数组,里面有两个加载器
因为加载器的执行顺序是从后往前执行,所以ts-loader写在后面先将ts代码转成js,然后再用babel转换js版本
编译流:ts先去找ts-loader转换成js,然后js再找babel转换js版本

ie11里面没有promise,corejs里面有自己实现的promise,所以引入项目就可以用了,但是也不一定可以在ie11上用

//因为编译完用的是箭头函数,(()=>{})立即执行,创建了一个作用域,为了避免代码之间互相产生干扰,但是箭头函数ie不支持。
//但是手动写的箭头函数就可以编译成普通函数
而webpack自带的,打包自动生成的是立即执行函数,没有经过babel,也没有经过ts-loading,证明webpack最新版本有些功能也不兼容ie。怎么办?修改配置文件:在webpage.config.js文件中,在output中设置即可;


