project root
|
|-- public
|
|-- js
|
|-- src
|
|-- ts
|--index.ts
browserslist
プロパティを追加scripts
を追加$ npm install -D babel-loader @babel/core @babel/preset-env @babel/preset-typescript
$ npm install -D webpack webpack-cli
module.exports = {
mode: 'development', // or production
entry: {
index: './src/ts/index.ts',
},
output: {
filename: '[name].js',
path: __dirname + '/public/js',
},
optimization: {
minimize: true,
},
devtool: 'source-map',
module: {
rules: [
{
// 拡張子 .js の場合
test: /\.ts$/,
use: [
{
// Babel を利用する
loader: 'babel-loader',
// Babel のオプションを指定する
options: {
presets: [
'@babel/preset-typescript',
// プリセットを指定することでES5に変換
// 配列で指定する必要がある
['@babel/preset-env',{ "targets": "defaults" }],
],
},
},
],
},
],
},
};
@babel/preset-env
のtarget
とbrowserslist
の関係は以下を参照。
https://babeljs.io/docs/en/babel-preset-env#options
{
"browserslist": [
"> 1%",
"last 2 versions",
"Firefox ESR",
"IE 11"
]
}
{
"scripts": {
"build": "webpack"
}
}
{
"compilerOptions": {
"target": "es5",
"lib": [
"ESNext"
],
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
ref.
$ npm run build
npm i ts-node -D
{
"scripts": {
"run": "ts-node ./src/ts/app.ts",
}
}