这也是为什么越来越多的公司开始采用typescript的原因,如果使用typescript,对应打包的webpack配置就会有所差异。所以我们看看webpack怎么对typescript进行打包支持。新建一个项目, 初始化package.json,安装webpack。typescript的后缀是index.tsx
class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } } let greeter = new Greeter("world"); alert(greeter.greet())
const path = require('path'); module.exports = { mode: 'production', entry: './src/index.tsx', module: { rules: [{ test: /\.tsx?$/, // ts-loader是官方提供的处理tsx的文件 use: 'ts-loader', exclude: /node_modules/ }] }, output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } }
package.json
"scripts": { "build": "webpack" },
运行npm run build。这样是否打包成功了,打包试试,发现报错了,如下
提示说缺少一个tsconfig.json文件。
tsconfig.json { "compilerOptions": { "outDir": "./dist", // 这块写不写都可以,webpack.config.js里面已经配置了output "module": "es6", // 指的是用的es module的引入方式 "target": "es5", // 指的是打包成es5代码 "allowJs": true, // 允许tsx引入js文件 } }
配置好之后,再运行npm run build。发现打包成功了,出现了dist,bundle.js。这个时候将bundle.js复制到控制太,能弹出hello world。说明打包生成的文件没有任何问题。
import * as _ from 'lodash'; class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return _.join(['Hello,',this.greeting], ''); } } let greeter = new Greeter('world'); alert(greeter.greet())
所以在写ts的时候,在写代码的时候就会报错,从而更快的发现问题。
3、我怎么知道哪些库有对应的ts,types呢