webpack.config.js
const path = require('path')
module.exports = {
context: __dirname,
entry: [
'babel-polyfill',
'./server.js',
],
devtool: 'source-map',
target: 'node',
output: {
path: path.join(__dirname, '/build'),
filename: 'server.js',
library: 'server',
libraryTarget: 'umd',
umdNamedDefine: true,
},
externals: nodeModules,
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' },
{ test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader', options: {}},
],
},
performance: {
hints: 'warning',
},
plugins: [],
resolve: {
modules: [
'./node_modules',
path.resolve(__dirname),
],
},
node: {
fs: 'empty',
},
}
С помощью вышеуказанного файла конфигурации webpack я могу создать простой сервер nodejs ... на выходе будет один файл server.js, который включает все импортированные модули node_modules ..поэтому для развертывания в производство мне нужно всего лишь отправить один файл, около 2-4 МБ в зависимости от микро-службы.
Я перехожу на машинописный текст ... но как я могу получить тот же результат?В Typescript он, по сути, копирует структуру файлов машинописного текста в папку сборки и затем мигрирует в файлы javascript в нужной «цели»:
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "ES2017",
"moduleResolution": "node",
"outDir": "build",
"baseUrl": "./",
"sourceMap": true,
"resolveJsonModule": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"paths": {
"@constants": [
"src/constants"
],
"@database": [
"src/database"
],
"@domains": [
"src/domains"
],
"@http": [
"src/http"
],
"@services": [
"src/services"
],
"@utils": [
"src/utils"
],
"@/*": [
"src/*"
]
},
"plugins": [
{
"transform": "@zerollup/ts-transform-paths",
"exclude": ["*"]
}
]
},
"exclude": [
"package.json"
]
}
Лучше всего, 1-й конвейер к коду es, затем запустите webpack для этого, чтобы создать единую папку сборки?