【问题标题】:Setup Exe for NestJS API Application为 NestJS API 应用程序设置 Exe
【发布时间】:2019-07-10 13:59:46
【问题描述】:

我是 typescript 和 NPM 的新手,我使用 NestJS 节点框架创建了一个 API 项目。我正在尝试通过捆绑我的应用程序来创建一个 EXE 文件。我试过Pkg exe 创建者和fuse-box。我仍然找不到任何可行的解决方案。请有人帮我将我的应用程序捆绑到一个 exe 文件中。我在这个问题中附上了我的 package.json。

`

{
  "name": "health-first",
  "version": "0.0.0",
  "description": "Meal management system",
  "author": "Dhayananth",
  "license": "MIT",
  "scripts": {
    "build": "tsc -p tsconfig.build.json",
    "format": "prettier --write \"src/**/*.ts\"",
    "start": "ts-node -r tsconfig-paths/register src/main.ts",
    "start:dev": "nodemon",
    "start:debug": "nodemon --config nodemon-debug.json",
    "prestart:prod": "rimraf dist && tsc",
    "start:prod": "node dist/main.js",
    "lint": "tslint -p tsconfig.json -c tslint.json",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^5.4.0",
    "@nestjs/core": "^5.4.0",
    "@nestjs/typeorm": "^5.2.2",
    "mysql": "^2.16.0",
    "nestjs-flub": "^0.1.0",
    "reflect-metadata": "^0.1.12",
    "rimraf": "^2.6.2",
    "rxjs": "^6.2.2",
    "typeorm": "^0.2.11",
    "typescript": "^3.0.1"
  },
  "devDependencies": {
    "@nestjs/testing": "^5.1.0",
    "@types/express": "^4.16.0",
    "@types/jest": "^23.3.1",
    "@types/node": "^10.7.1",
    "@types/supertest": "^2.0.5",
    "fuse-box": "^3.7.1",
    "jest": "^23.5.0",
    "nodemon": "^1.18.3",
    "prettier": "^1.14.2",
    "supertest": "^3.1.0",
    "ts-jest": "^23.1.3",
    "ts-loader": "^4.4.2",
    "ts-node": "^7.0.1",
    "tsconfig-paths": "^3.5.0",
    "tslint": "5.11.0"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

`

【问题讨论】:

    标签: typescript bundle exe nestjs


    【解决方案1】:

    不太清楚为什么要从应用程序创建 exe 文件?但是我不是Windows用户。根据我的观点和经验,我使用指挥官或 vorpal 来使用嵌套容器创建执行命令。

    这是我使用的脚本示例

    import { NestFactory } from '@nestjs/core';
    import { TaskConsumer, JobConsumer, ConsumerModule } from './consumers';
    import * as commander from 'commander';
    const pack = require('./../package.json');
    import { AppModule } from 'app.module';
    import { ConsumerInterface } from 'consumers/consumer.interface';
    import { Logger } from '@nestjs/common';
    
    async function bootstrap(requestedConsumer: 'task' | 'job') {
      const app = await NestFactory.create(AppModule);
    
      await app.init();
    
      const consumer =
        requestedConsumer === 'task'
          ? app.select(ConsumerModule).get<ConsumerInterface>(TaskConsumer)
          : app.select(ConsumerModule).get<ConsumerInterface>(JobConsumer);
    
      await consumer.listen(requestedConsumer);
    }
    
    commander
      .version(pack.version)
      .command('run <consumer>')
      .action((requestedConsumer, cmd) => {
        if (requestedConsumer !== 'task' && requestedConsumer !== 'job') {
          Logger.warn(
            `Consumer [${requestedConsumer}] is not a valid consumer. Please enter 'task' or 'job'`,
            'Command',
          );
          process.exit();
        }
    
        bootstrap(requestedConsumer);
        process.stdin.resume();
      });
    
    commander.parse(process.argv);
    

    然后我像 ts-node -r tsconfig-paths/register src/queue.ts run task 一样在 dev 中运行这个脚本。然后在产品node dist/queue.js run task。我可以添加一个shebang,但是... ...我不知道为什么我不说实话!

    不确定这是您想要的吗?但这就是我如何创建一个可以使用nestjs执行的命令。

    【讨论】:

    • 感谢您的建议。但我找到了我的解决方案。我使用 webpack 创建了一个 js 文件,然后我安装了“pkg”npm pack。使用这个 pkg 我创建了完美的工作 exe 文件,我可以在 windows pc 上运行它,而无需安装节点或任何依赖项。感谢 Shady G. Khalifa
    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2022-08-19
    • 2011-01-24
    • 2021-10-26
    • 2012-08-14
    相关资源
    最近更新 更多