Appearance
相关TS代码
randomNumber.ts
typescript
const randomNumber = (min: number, max: number): number => {
let num = Math.floor(Math.random() * (min - max) + max);
return num;
}
export default randomNumber;index.ts
typescript
import randomNumber from "./randomNumber.ts";
console.log(randomNumber(1, 100));
export default { randomNumber };webpack依赖与基本设置
shell
npm i webpack webpack-cli -Dwebpack.config.js
typescript
const path = require('path')
/**
* @type {import('webpack').Configuration}
*/
module.exports = {
mode:"development",
entry: path.resolve(__dirname, './src/index.ts'), // 入口文件
output: {
path: path.resolve(__dirname, './dist'), // 打包后的目录
filename: '[name].[contenthash:6].js', // 打包后的文件
clean: true, // 清理打包目录 /dist 文件夹
publicPath: "/"
},
resolve: {
// 引入文件时不需要加后缀。
extensions: ['.ts', '.js', '.json'],
}
}tsconfig.json基本配置
typescript
{
"compilerOptions": {
"target": "es2016",
"module": "ESNext",
"moduleResolution": "node",
"noEmit": true,
"allowImportingTsExtensions": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
},
"include": ["src/**/*.ts","src/**/*.d.ts"]
}webpack运行命令:
typescript
npx webpack -c webpack.config.js当然也能直接配置到script脚本中
typescript
"scripts": {
"build": "webpack -c webpack.config.js"
},ts-loader安装
webpack本身并不能支持处理ts文件,因此需要ts-loader支持
typescript
npm i typescript ts-loader -D配置:
typescript
const path = require('path')
/**
* @type {import('webpack').Configuration}
*/
module.exports = {
mode:"development",
entry: path.resolve(__dirname, './src/index.ts'), // 入口文件
output: {
path: path.resolve(__dirname, './dist'), // 打包后的目录
filename: '[name].[contenthash:6].js', // 打包后的文件
clean: true, // 清理打包目录 /dist 文件夹
publicPath: "/"
},
resolve: {
// 引入文件时不需要加后缀。
// 这里只配置vue,ts,js和json, 其他文件引入都要求带后缀,可以稍微提升构建速度
extensions: ['.ts', '.js', '.json'],
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true, // 关闭类型检查,即只进行转译,不进行类型检查
}
}
],
}
]
}
}babel预设
typescript
npm i babel-loader @babel/core @babel/preset-env -D配置:
typescript
const path = require('path')
/**
* @type {import('webpack').Configuration}
*/
module.exports = {
mode:"development",
entry: path.resolve(__dirname, './src/index.ts'), // 入口文件
output: {
path: path.resolve(__dirname, './dist'), // 打包后的目录
filename: '[name].[contenthash:6].js', // 打包后的文件
clean: true, // 清理打包目录 /dist 文件夹
publicPath: "/"
},
resolve: {
// 引入文件时不需要加后缀。
// 这里只配置vue,ts,js和json, 其他文件引入都要求带后缀,可以稍微提升构建速度
extensions: ['.ts', '.js', '.json'],
},
module: {
rules: [
{
test: /\.m?jsx?$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true, // 关闭类型检查,即只进行转译,不进行类型检查
}
}
],
}
]
}
}babel的ts预设
typescript
npm i @babel/preset-typescript -D配置:
typescript
const path = require('path')
/**
* @type {import('webpack').Configuration}
*/
module.exports = {
mode:"development",
entry: path.resolve(__dirname, './src/index.ts'), // 入口文件
output: {
path: path.resolve(__dirname, './dist'), // 打包后的目录
filename: '[name].[contenthash:6].js', // 打包后的文件
clean: true, // 清理打包目录 /dist 文件夹
publicPath: "/"
},
resolve: {
// 引入文件时不需要加后缀。
// 这里只配置vue,ts,js和json, 其他文件引入都要求带后缀,可以稍微提升构建速度
extensions: ['.ts', '.js', '.json'],
},
module: {
rules: [
{
test: /\.m?jsx?$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
// {
// loader: 'ts-loader',
// options: {
// transpileOnly: true, // 关闭类型检查,即只进行转译,不进行类型检查
// }
// },
{
loader: 'babel-loader',
options: {
presets: [
[
"@babel/preset-typescript",
{
allExtensions: true,
},
],
]
}
}
],
}
]
}
}