教你使用webpack打包編譯TypeScript代碼
TypeScript打包
webpack整合
通常情況下,實際開發(fā)中我們都需要使用構建工具對代碼進行打包;
TS同樣也可以結合構建工具一起使用,下邊以webpack為例介紹一下如何結合構建工具使用TS;
步驟如下:
初始化項目
進入項目根目錄,執(zhí)行命令 npm init -y,創(chuàng)建package.json文件
下載構建工具
命令如下:
npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin
共安裝了7個包:
- webpack:構建工具webpack
- webpack-cli:webpack的命令行工具
- webpack-dev-server:webpack的開發(fā)服務器
- typescript:ts編譯器
- ts-loader:ts加載器,用于在webpack中編譯ts文件
- html-webpack-plugin:webpack中html插件,用來自動創(chuàng)建html文件
- clean-webpack-plugin:webpack中的清除插件,每次構建都會先清除目錄
配置webpack
根目錄下創(chuàng)建webpack的配置文件webpack.config.js:
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
module.exports = {
optimization:{
minimize: false // 關閉代碼壓縮,可選
},
entry: "./src/index.ts",
devtool: "inline-source-map",
devServer: {
contentBase: './dist'
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js",
environment: {
arrowFunction: false // 關閉webpack的箭頭函數(shù),可選
}
},
resolve: {
extensions: [".ts", ".js"]
},
module: {
rules: [
{
test: /\.ts$/,
use: {
loader: "ts-loader"
},
exclude: /node_modules/
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
title:'TS測試'
}),
]
}
配置TS編譯選項
根目錄下創(chuàng)建tsconfig.json,配置可以根據自己需要
{
"compilerOptions": {
"target": "ES2015",
"module": "ES2015",
"strict": true
}
}
修改package.json配置
修改package.json添加如下配置
{
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack serve --open chrome.exe"
},
...
}
項目使用
在src下創(chuàng)建ts文件,并在并命令行執(zhí)行npm run build對代碼進行編譯;
或者執(zhí)行npm start來啟動開發(fā)服務器;
Babel
除了webpack,開發(fā)中還經常需要結合babel來對代碼進行轉換;
以使其可以兼容到更多的瀏覽器,在上述步驟的基礎上,通過以下步驟再將babel引入到項目中;
雖然TS在編譯時也支持代碼轉換,但是只支持簡單的代碼轉換;
對于例如:Promise等ES6特性,TS無法直接轉換,這時還要用到babel來做轉換;
安裝依賴包:
npm i -D @babel/core @babel/preset-env babel-loader core-js
共安裝了4個包,分別是:
- @babel/core:babel的核心工具
- @babel/preset-env:babel的預定義環(huán)境
- @babel-loader:babel在webpack中的加載器
- core-js:core-js用來使老版本的瀏覽器支持新版ES語法
修改webpack.config.js配置文件
module: {
rules: [
{
test: /\.ts$/,
use: [
{
loader: "babel-loader",
options:{
presets: [
[
"@babel/preset-env",
{
"targets":{
"chrome": "58",
"ie": "11"
},
"corejs":"3",
"useBuiltIns": "usage"
}
]
]
}
},
{
loader: "ts-loader",
}
],
exclude: /node_modules/
}
]
}
如此一來,使用ts編譯后的文件將會再次被babel處理;
使得代碼可以在大部分瀏覽器中直接使用;
同時可以在配置選項的targets中指定要兼容的瀏覽器版本;
到此這篇關于使用webpack打包編譯TypeScript代碼的文章就介紹到這了,更多相關webpack打包編譯TypeScript內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

