Я настраиваю проект машинописного текста, который мигрирует из файлов JavaScript. Ниже структура папка
src
--featureA
----script1.ts
----script2.ts
----index.ts
--featureB
----script1.ts
----index.ts
tsconfig.ts
webpack.config.js
package.json
Мой tsconfig.ts
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"rootDir": "src",
"outDir": "dist",
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"suppressExcessPropertyErrors": false,
"suppressImplicitAnyIndexErrors": false,
"strictFunctionTypes": true,
"strictNullChecks": true,
"strictPropertyInitialization": true,
"lib": ["es5", "dom"],
"typeRoots": [
"node_modules/@types"
],
},
"include": [
"./src/**/*"
],
"exclude": [
"node_modules"
]
}
Мой конфиг веб-пакета
const { CheckerPlugin } = require("awesome-typescript-loader");
module.exports = {
mode: "development",
resolve: {
extensions: [".ts", ".tsx", ".js", ".jsx"]
},
devtool: "source-map",
module: {
rules: [
{
test: /\.tsx?$/,
loaders: ["awesome-typescript-loader"]
}
]
},
plugins: [
new CheckerPlugin()
],
devServer: {
before(app) {
},
contentBase: "web"
}
};
Мой пакет.json
"scripts": {
"start": "webpack-dev-server"
},
"devDependencies": {
"awesome-typescript-loader": "^3.5.0",
"typescript": "^2.7.2",
"typewiz": "^1.2.3",
"typewiz-webpack": "^1.2.3",
"webpack": "^4.20.0",
"webpack-cli": "^3.1.1",
"webpack-dev-server": "^3.1.0"
}
Функции A и B являются автономными, и у меня нет файла main.js, служащего точкой входа. Если я скомпилирую и уменьшу компонент A, я получу файл featureA.js и разверну. Это результат, которого я хочу достичь.
Я до сих пор не знаю, подходит ли эта настройка для моего требования? и как я могу использовать веб-пакет для компиляции каждой функции по требованию, и желаемая команда выглядит следующим образом:
Input: npm compile featureA
Output: featureA.js (with minified)
Не могли бы вы мне помочь?