Всегда компилируйте определенные файлы при компиляции NX Workspace Nest JS Project с использованием Angular CLI - PullRequest
0 голосов
/ 04 августа 2020

У меня есть проект, настроенный как рабочая область nx, он включает проект Nest JS с именем syn c. Я пытаюсь использовать это в Lambda с несколькими функциями, у меня это работает вне рабочего пространства NX, которое компилирует полный каталог, однако в рабочем пространстве NX оно компилируется в основной файл. js, который не включает два файла Lambda, которые вызывают структуру Nest JS.

Думаю, проблема здесь:

    "sync": {
        "root": "apps/sync",
        "sourceRoot": "apps/sync/src",
        "projectType": "application",
        "prefix": "sync",
        "schematics": {},
        "architect": {
        "build": {
            "builder": "@nrwl/node:build",
            "options": {
                "outputPath": "dist/apps/sync",
                "main": "apps/sync/src/main.ts",
                "tsConfig": "apps/sync/tsconfig.app.json",
                "assets": ["apps/sync/src/assets"],
                "scripts": ["apps/sync/src/app/lambdas/**/*"]
            },
            "configurations": {
                "production": {
                    "optimization": true,
                    "extractLicenses": true,
                    "inspect": false,
                    "fileReplacements": [
                        {
                            "replace": "apps/sync/src/environments/environment.ts",
                            "with": "apps/sync/src/environments/environment.prod.ts"
                        }
                    ]
                }
            }
        },
        "serve": {
            "builder": "@nrwl/node:execute",
            "options": {
                "buildTarget": "sync:build"
            }
        },
        "lint": {
            "builder": "@angular-devkit/build-angular:tslint",
            "options": {
                "tsConfig": [
                    "apps/sync/tsconfig.app.json",
                    "apps/sync/tsconfig.spec.json"
                ],
                "exclude": ["**/node_modules/**", "!apps/sync/**/*"]
            }
        },
        "test": {
            "builder": "@nrwl/jest:jest",
            "options": {
                "jestConfig": "apps/sync/jest.config.js",
                "tsConfig": "apps/sync/tsconfig.spec.json",
                "passWithNoTests": true
            }
        }
    }

которые всегда компилируют файл JS на основе этого файла:

    import { Logger } from '@nestjs/common';
    import { NestFactory } from '@nestjs/core';

    import { AppModule } from './app/app.module';

    declare const module: any;

    async function bootstrap() {
        const app = await NestFactory.create(AppModule, {
            logger: ['log', 'error', 'warn', 'debug', 'verbose'],
        });
        const port = process.env.PORT || 3010;
        await app.listen(port, () => {
            Logger.log('Listening at http://localhost:' + port);
        });

        if (module.hot) {
            module.hot.accept();
            module.hot.dispose(() => app.close());
        }
    }

    bootstrap();

Однако у меня есть два файла, которые нужно включить, поскольку они запускают каждую функцию:

    import { Handler } from 'aws-lambda';
    import { NestFactory } from '@nestjs/core';
    import { AppModule } from '../app.module';
    import { FooController } from '../foo/foo.controller';

    async function bootstrap() {
        const app = await NestFactory.createApplicationContext(AppModule);
        return app;
    }

    export const syncFooHandler: Handler = async (event) => {
        const app = await bootstrap();
        const fooService = app.get(FooController);
        return await fooService.sync(event);
    };
    import { Handler } from 'aws-lambda';
    import { NestFactory } from '@nestjs/core';
    import { AppModule } from '../app.module';
    import { BarController } from '../bar/bar.controller';

    async function bootstrap() {
        const app = await NestFactory.createApplicationContext(AppModule);
        return app;
    }

    export const syncStudentsHandler: Handler = async (event) => {
        const app = await bootstrap();
        const barService = app.get(BarController);
        return await barService.sync(event);
    };

Но эти файлы не включены в main.js файл, который скомпилирован .

...