Ts学习记录->webpack打包工具

本文介绍了如何使用TypeScript、Webpack、HTMLWebpackPlugin等工具进行项目构建,包括配置package.json、tsconfig.json,安装依赖,设置入口文件、输出目录,以及使用Babel兼容性处理。全程详细讲解了从初始化到启动开发服务器的全过程。
摘要由CSDN通过智能技术生成

1、进入根目录 使用 npm init -y 生成 package.json 配置文件

npm init -y

2、安装webpack cnpm i -D webpack webpack-cli typescript ts-loader 使用的依赖

cnpm i -D webpack webpack-cli typescript ts-loader

3、配置webpack配置文件 webpack.config.js

// 引入一个包
const path = require('path');
const { OutputFileType } = require('typescript');

/* 
webpack中所有的配置信息都应该写在module.exports中
*/
module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后的文件
        filename: "bundle.js"
    },

    // 指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test指定规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: 'ts-loader',
                // 要排除的文件
                exclude: /node-modules/
            }
        ]
    }
    
};

4、指定配置文件来指定TS的编译规范 在根目录创建 tsconfig.json

{
    "compilerOptions": {
        "module": "ES6",
        "target": "ES6",
       "strict": true
    }
}

5、在package.json 里面加  "build": "webpack"

 "build": "webpack"
{
  "name": "03",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ts-loader": "^9.2.8",
    "typescript": "^4.6.2",
    "webpack": "^5.70.0",
    "webpack-cli": "^4.9.2"
  }
}

6、执行命令  npm run build

 npm run build

7、生成HTML5插件安装

cnpm i -D html-webpack-plugin

8、package.json 配置引入html插件 

// 引入一个包
const path = require('path');
/* 
webpack中所有的配置信息都应该写在module.exports中
*/

// 引入html插件
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后的文件
        filename: "bundle.js"
    },
    mode: 'development',

    // 指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test指定规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: 'ts-loader',
                // 要排除的文件夹
                exclude: /node_modules/
            }
        ]
    },
    // 配置webpaack插件
    plugins: [
        new HtmlWebpackPlugin( {
               template: "./src/index.html"
            }
        ),
    ]
    
};

 9、指定生成 html 模板 ,自定义一篇html文件在package.json 引入

   // 配置webpaack插件
    plugins: [
        new HtmlWebpackPlugin( {
               template: "./src/index.html"
            }
        ),
    ]
    

 10、webpack开发服务器

cnpm i -D webpack-dev-server

11、packa.json 配置start

{
  "name": "03",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack --mode development",  
    "build": "webpack --mode production",
    "start": "webpack serve --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "html-webpack-plugin": "^5.5.0",
    "ts-loader": "^9.2.8",
    "typescript": "^4.6.2",
    "webpack": "^5.70.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.7.4"
  }
}

11、npm start  运行服务器

npm start 

12、因为每次生成js文件为替换旧文件,为了保持每次更新都是新文件需要安装插件 cnpm  i -D clean-webpack-plugin

cnpm  i -D clean-webpack-plugin

在 webpack.config.js 引入

// 引入一个包
const path = require('path');
/* 
webpack中所有的配置信息都应该写在module.exports中
*/

// 引入html插件
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 引入clean插件
const {CleanWebpackPlugin} = require ('clean-webpack-plugin')

module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后的文件
        filename: "bundle.js"
    },
    mode: 'development',

    // 指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test指定规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: 'ts-loader',
                // 要排除的文件夹
                exclude: /node_modules/
            }
        ]
    },
    // 配置webpaack插件
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin( {
               template: "./src/index.html"
            }
        ),
    ]
    
};

12、设置引用模块

// 用来设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }
    

// 引入一个包
const path = require('path');
/* 
webpack中所有的配置信息都应该写在module.exports中
*/

// 引入html插件
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 引入clean插件
const {CleanWebpackPlugin} = require ('clean-webpack-plugin')

module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后的文件
        filename: "bundle.js"
    },
    mode: 'development',

    // 指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test指定规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: 'ts-loader',
                // 要排除的文件夹
                exclude: /node_modules/
            }
        ]
    },
    // 配置webpaack插件
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin( {
               template: "./src/index.html"
            }
        ),
    ],

    // 用来设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }
    
};

13、安装代码兼容性插件babel cnpm i -D @babel/core @babel/preset-env babel-loader core-js

cnpm i -D @babel/core @babel/preset-env babel-loader core-js

配置完的webpack.config.js

// 引入一个包
const path = require('path');
/* 
webpack中所有的配置信息都应该写在module.exports中
*/

// 引入html插件
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 引入clean插件
const {CleanWebpackPlugin} = require ('clean-webpack-plugin')

module.exports = {

    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件目录
        path: path.resolve(__dirname, 'dist'),

        // 打包后的文件
        filename: "bundle.js"
    },
    mode: 'development',

    // 指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test指定规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: [
                    // 配置babel
                    {
                        // 指定加载器
                        loader:"babel-loader", 
                        
                        options: {
                             // 设置babel,预定义的环境
                            presets: [
                                 //指定环境插件
                                [
                                "@babel/preset-env",
                                // 配置信息
                                {
                                    // 要兼容的目标浏览器
                                    targets:{
                                        "chrome" :"55"
                                    },
                                    // corejs的指定版本
                                    "corejs": "3",
                                    // 使用corejs的方式 usage 表示按需加载
                                    "useBuiltIns": "usage"
                                }
                                ]
                               
                            ]
                        }
                    },
                    'ts-loader'
                ],
                // 要排除的文件夹
                exclude: /node_modules/
            }
        ]
    },
    // 配置webpaack插件
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin( {
               template: "./src/index.html"
            }
        ),
    ],

    // 用来设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }
    
};

 配置完的 package.json

{
  "name": "03",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack --mode development",
    "build": "webpack --mode production",
    "start": "webpack serve --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.17.7",
    "@babel/preset-env": "^7.16.11",
    "babel-loader": "^8.2.3",
    "clean-webpack-plugin": "^4.0.0",
    "core-js": "^3.21.1",
    "html-webpack-plugin": "^5.5.0",
    "ts-loader": "^9.2.8",
    "typescript": "^4.6.2",
    "webpack": "^5.70.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.7.4"
  }
}

 配置完的 tsconfig.json

{
    "compilerOptions": {
        "module": "ES6",
        "target": "ES6",
       "strict": true
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值