Если кому-то интересно, как я решил эту проблему - я использовал веб-пакет со следующей конфигурацией:
import webpack from 'webpack';
import path from 'path';
import nodeExternals from 'webpack-node-externals';
const config: webpack.Configuration = {
mode: "production",
entry: "./src/server.ts",
target: "node",
output: {
path: path.resolve(__dirname, 'dist'),
filename: "main.js"
},
resolve: {
extensions: [".ts", ".js"],
},
devtool: "source-map",
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
use: {
loader: "ts-loader",
options: {
transpileOnly: true
}
}
}
],
},
externals: nodeExternals()
}
export default config;
И на сервере непрерывной интеграции я запускаю следующие команды:
npm install
webpack
npm ci
Хитрость здесьnpm ci
(начиная с npm v6), который удаляет devDependencies из node_modules
.После этого я включаю node_modules
в пакет развертывания вместе с переданными js
файлами