Skip to content

image.pngimage.png 特点:

  • 项目文档及相关的资源在根目录
  • 数据库及项目配置会放在根目录(细节:数据库升级文件)
  • src 中会对功能进行划分建不同的文件夹 usersposts
  • 单个功能文件夹中,会包括一个完整 CURD 的相关文件 (dto/controller/module/providers/service)
  • 抽离公共配置到 shared 文件夹

特点:

  • 根目录中存放 webpack、微服务配置 + 项目文档
  • src 中会对功能进行划分建不同的文件夹:apicoredynamodb-streamimage-resizer
  • 在核心模块中,按照功能模块进划分,与之相关的 entity、service 放置在同一文件夹中

特点:

  • 项目文档及相关的资源在根目录,包括 typingstestbin
  • src 中会对功能进行划分建不同的文件夹
  • 抽离公共代码到 common 文件夹,配置文件放在 config 文件夹,实体类放置在 entity
  • 鉴权相关的逻辑放在 auth
  • 把同类的 guardsfiltersdecoratorsinterceptorsinterfaceserrors 存放在 common 文件夹中

全局路径前缀

main.ts 添加:

ts
app.setGlobalPrefix('api/v1');

Webpeck 热更新支持

【Node. Js 框架之 Nest JS 基础学习】 https://www.bilibili.com/video/BV14fDGYUEip/?p=17&share_source=copy_web&vd_source=320efa3d6a76c009ab23f7fcc174b3f4

首先,需要安装 Webpack 及其相关插件。如果您使用的是 Nest CLI,则安装以下包:

bash
npm i --save-dev webpack-node-externals run-script-webpack-plugin webpack

如果您不使用 Nest CLI,则还需要安装 webpack-clits-loader

bash
npm i --save-dev webpack webpack-cli webpack-node-externals ts-loader run-script-webpack-plugin

2.2 配置 Webpack

在您的项目根目录下创建一个 webpack-hmr.config.js 文件(如果您使用 Nest CLI)或 webpack.config.js 文件(如果您不使用 Nest CLI),并添加相应的配置。

使用 Nest CLI 的配置示例:

javascript
const nodeExternals = require('webpack-node-externals');
const { RunScriptWebpackPlugin } = require('run-script-webpack-plugin');

module.exports = function(options, webpack) {
  return {
    ...options,
    entry: ['webpack/hot/poll?100', options.entry],
    externals: [nodeExternals({ allowlist: ['webpack/hot/poll?100'], })],
    plugins: [
      ...options.plugins,
      new webpack.HotModuleReplacementPlugin(),
      new webpack.WatchIgnorePlugin({ paths: [/\.js$/, /\.d\.ts$/], }),
      new RunScriptWebpackPlugin({ name: options.output.filename, autoRestart: false }),
    ],
  };
};

修改入口文件

在您的 main.ts 文件中添加 Webpack 相关的代码以启用 HMR:

typescript
declare const module: any;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT ?? 3000);

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

2.4 运行开发服务器

最后,在 package.json 中添加一个脚本以简化执行过程,并运行它:

json
"scripts": {
  "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch"
}
bash
npm run start:dev

这样,您的 NestJS 应用程序现在应该支持热更新了。