Wepack打包ts

121 阅读3分钟

编译

tsconfig.json是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译。

"include"用来指定那谢ts文件需要被编译。**任意目录

*任意文件

"include":[
​
•   "./src/**/*"  //编译src目录下的任意文件]

”exclude“不需要被编译的文件夹

默认值["node_modules"...]

"exclude":[
​
•   "./src/hello/**/*"  //不需要编译src目录下hello目录下的任意文件]

”compllerOptions“编译器的选项

"compllerOptions":[
    //用来指定ts被编译为ES的版本
    "target":"ES5",
    //指定要使用的模块化的规范
    "module":"es2015",
    //用来指定项目中要使用的库
    "lib":[],
    //用来指定编译后文件所在的目录
    "outDir":"",
    //将代码合并为一个文件,所有的全局作用域中的代码合并到同一文件夹
    "outFile":"",
    //是否对js文件进行编译,默认是false
    "alowJs":false,
    //是否检查js代码是否符合语法规范,默认是false
    "checkJs":true,
    //是否移除注释
    "removeComments":false,
    //不生成编译后的文件,默认是false
    "noEmit":false,
    //当有错误时,不生成编译文件,默认是false
    "noEmitOnError":true,
    //严格检查的总开关
    "strictNullChecks":true,
    //设置编译后的文件严格模式,编译后的js文件中在文件开头部分添加一个“use strict”
    "alwaysStrict":false,
    //不允许隐式的any的类型,不提倡使用any类型,更不提倡使用隐式的any,将noImplicitAny改为true来对隐式的any类型进行检查
    "noImplicitAny":false,
    //不允许不明确的this
    "noImplicitThis":false,
    //严格的检查空值
    "strictNullChecks":true,
    
]

"strictNullChecks":true,的例子:

box?.addEventListener('click',function(){`
    alert(123)})
     ||
if(box!==null){
    box.addEventListener('click',function(){`
    alert(123)})
}    

weback打包ts代码

1.npm init -y对项目初始化生成packagejson
2.cnpm i -D weback wepack-cli typescipt ts-loader安装的依赖

webpack:构建工具webpack

webpack-cli:webpack的命令行工具

webpack-dev-server:webpack的开发服务器

typescript:ts编译器

ts-loader:ts加载器,用于在webpack中编译ts文件

html-webpack-plugin:webpack中html插件,用来自动创建html文件

clean-webpack-plugin:webpack中的清除插件,每次构建都会先清除目录

@babel/core @babel/preset-env babel-loader core.js 兼容浏览器

3.新建weback.config.js
//引入一个包
const path = require('path')
// 引入html插件
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
//webpack中的所有配置信息都应该写在module.exports中
module.exports={
    // 指定入口文件(入口)
    entry: "./src/index.ts",
    // 指定打包文件所在目录(出口)
    output: {
        // 指定打包文件的目录,开头引入了path的一个包
        path: path.resolve(__dirname, "dist"),
        // 打包后文件的文件名
        filename: "bundle.js",
        environment: {
            arrowFunction: false // 关闭webpack的箭头函数,可选  兼容ie
        }
    },
    // 指定webpack打包时要使用的模块
    module: {
        //指定要加载的规则
        rules: [
            {
                //指定规则生效的文件,表示去匹配说有以.ts结尾的文件
                test: /.ts$/,
                // 要使用的loader
                use: [
                //配置babel
                   {
                   //指定加载器
                    "loader":'babel-loader',
                    "options":{
                        //设置预定义的环境
                        presets:[
                            [
                            //指定环境插件
                            "@babel/preset-env",
                            //配置信息
                            {
                            //要兼容的浏览器
                                targets:{
                                 "chrome":"88"
                                },
                                "corejs":'3',
                                //使用corejs的方式”usage“表示按需加载
                                "useBulitIns":"usage"
                            }
                            ]
                        ]
                    }
                   },
                    "ts-loader"
                ]        
              
                // 要排除的文件
                exclude: /node_modules/
            }
        ]
    },
    optimization:{
        minimize: false // 关闭代码压缩,可选
    },
    devtool: "inline-source-map",
    devServer: {
        contentBase: './dist'
    },
    
    // 用来设置引入模块
    resolve: {
        extensions: [".ts", ".js"]
    },
    
    // 配置html-webpack插件
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin({
            //title:'TS测试'
            // 设置 title 模板
            template: "./src/index.html"
        }),
    ]
}
4.根目录下创建tsconfig.json,配置可以根据自己需要
{
    "compilerOptions": {
        "target": "ES2015",
        "module": "ES2015",
        "strict": true,
        "noEmitOnError":true,
    }
}
5、修改package.json添加如下配置
{
  ...略...
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "build": "webpack",//通过build命令直接执行webpack
    // 启动webpack服务器并通过谷歌打开网页 安装npm i -D webpack-dev- serve 
    "start": "webpack serve --open chrome.exe" 
  },
  ...略...
}
​
6.在命令行执行npm run build对代码进行编译,或者执行npm start来启动开发服务器