Skip to content

scarsu/ts-webpack-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ts-webpack-demo

从0配置一个ts+webpack项目

# 全局安装ts
npm i typescript -g

# 生成ts配置文件
tsc --init

# 初始化npm包
npm init

# 安装相关工具
npm i webpack webpack-cli webpack-dev-sevrer ts-loader typescript html-webpack-plugin

webpack配置

// /build/webpack.config.js
// webpack配置ts-loader

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  // 入口设置为ts
  entry:'./src/index.ts',
  // 输出文件
  output:{
    filename:'app.js'
  },
  resolve:{
    // 模块导入 扩展名的处理,js、ts、tsx后缀的文件需要导入
    extensions:['.js','.ts','.tsx']
  },
  // 便于调试的sourcemap
  devtool:'cheap-module-eval-source-map',
  module:{
    rules:[
      // 配置一个ts-load的规则,使用ts-loader将ts文件编译
      {
        test: /\.tsx?$/i, // 匹配ts或tsx结尾的文件
        use:[{
          loader:'ts-loader'
        }],
        exclude:/node_modules/
      }
    ]
  },
  // 插件
  plugins:[
    new HtmlWebpackPlugin({
      // 自动在html中导入 output里配置的输出的js
      template:'./public/index.html'
    })
  ]
}

html

// /public/index.html
// 不需要引入js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
</body>
</html>

入口ts文件

// /src/index.ts

const msg = 'hi typescript'

function sayHi(msg:string){
  return 'hello,'+msg
}

document.body.textContent = sayHi(msg)

添加npm启动脚本

"dev": "webpack-dev-server --config ./build/webpack.config.js"

About

从0配置一个ts+webpack项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages