cd ..

ncc 打包编译nestjs

06-22. 0.905 分钟

背景:

最近在使用ncc 打包编译 nestjs,由于 nestjs 使用 hbs 作为模版引擎。

原先官网样例:

npm install --save hbs
import { NestFactory } from "@nestjs/core";
import { NestExpressApplication } from "@nestjs/platform-express";
import { join } from "path";
import { AppModule } from "./app.module";

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  app.useStaticAssets(join(__dirname, "..", "public"));
  app.setBaseViewsDir(join(__dirname, "..", "views"));
  //直接使用设置模版
  app.setViewEngine("hbs");

  await app.listen(3000);
}
bootstrap();

这样通过 ncc 编译,会存在丢失问题:

因此做如下设置即可:

import { NestFactory } from "@nestjs/core";
import { NestExpressApplication } from "@nestjs/platform-express";
import { join } from "path";
import { AppModule } from "./app.module";
import * as HBS from "hbs";

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.useStaticAssets(join(__dirname, "..", "public"));
  app.setBaseViewsDir(join(__dirname, "..", "views"));
  //手动重写
  app.set("view engine", "hbs");
  app.engine("hbs", HBS.__express);

  await app.listen(3000);
}
bootstrap();

通过将其引入,再次编译即可。