Как связать кукловода для развертывания производства с помощью веб-пакета? - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю API-интерфейс узла с экспрессом, который будет создавать PDF-файл, используя puppeteer для данного URL.Как я могу связать свое приложение для производства с веб-пакетом?Я не хочу глобально устанавливать кукловодов и экспресс на сервере, где я буду его размещать, и я не хочу вызывать npm install на сервере.Я хочу, чтобы кукловод и экспресс пришли вместе с файлами JS.Как я могу этого достичь?

1 Ответ

0 голосов
/ 12 декабря 2018

Если кому-то интересно, как я решил эту проблему - я использовал веб-пакет со следующей конфигурацией:

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 файлами

...