#javascript #node.js #typescript #webpack
#javascript #node.js #typescript #webpack
Вопрос:
Я настраиваю проект typescript, который переносится из файлов 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"
]
}
Моя конфигурация webpack
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"
}
};
Мой package.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 файл и развертывание. Это результат, которого я хочу достичь.
Я все еще не знаю, подходит ли эта настройка для моего требования? и как я могу использовать webpack для компиляции каждой функции по требованию, а желаемая команда выглядит следующим образом:
Input: npm compile featureA
Output: featureA.js (with minified)
Не могли бы вы мне помочь?
Ответ №1:
Может быть, вы могли бы использовать несколько точек входа? Вот так:
entry: {
featureA: './src/featureA/index.ts',
featureB: './src/featureB/index.ts'
}
Webpack скомпилирует оба файла в 2 отдельных пакета.
Комментарии:
1. куда мы должны это поместить
entry
? Можете ли вы объяснить подробнее?