ncc 打包编译nestjs
ncc 打包编译nestjs
背景:
最近在使用ncc 打包编译 nestjs,由于 nestjs 使用 hbs 作为模版引擎。
原先官网样例:
npm install --save hbsimport { 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();通过将其引入,再次编译即可。