I've got this configuration from https://www.npmjs.com/package/ts-loader:
webpack.config.js:
var path = require('path');
var webpack = require('webpack');
module.exports = {
mode: "development",
devtool: "inline-source-map",
entry: "./src/Api.ts",
output: {
filename: "bundle.js"
},
resolve: {
// Add `.ts` and `.tsx` as a resolvable extension.
extensions: [".ts", ".tsx", ".js"]
},
module: {
rules: [
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{ test: /\.tsx?$/, loader: "ts-loader" }
]
}
};
./src/Api.ts:
export class Api {
...
}
But when I run webpack I get:
Error: TypeScript emitted no output for Api.ts
Webpack allows TypeScript, Babel, and ESLint to work together, allowing us to develop a modern project. The ForkTsCheckerWebpackPlugin Webpack plugin allows code to be type-checked during the bundling process. Next up is a quiz to test our knowledge of this module.
ts file directly as configuration for your project. Of course, because TypeScript is just a superset for Javascript, you can always use TypeScript to write your webpack. config.
ts-loader uses tsc , the TypeScript compiler, and relies on your tsconfig. json configuration.
Like Babel, Webpack depends on TSC to transpile TypeScript to JavaScript but as TSC doesn't have a clue about Webpack, hence Webpack needs a loader to talk to TSC. This is where the ts-loader comes into play. Webpack compiles a TypeScript file using ts-loader package which asks TSC to do the compilation.
Check that you don't have noEmit
set to true
In your tsconfig.json
file.
First change webpack config entry like index.js to index.tsx. Second make sure rule added for tsx file like:
{ test: /\.(ts|js)x?$/, exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript", ], }, }, },
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With