Nest アプリのディレクトリ構造とスキャフォールディング コマンドの概要
開発に NestJS を正式に使用する前に、まず Nest アプリケーションのディレクトリ構造と一般的に使用されるいくつかのスクリプト コマンドを理解しましょう。
プロジェクトディレクトリ
以下は、@nest/cli を使用して作成された Nest プロジェクトのディレクトリ構造です。
前回の記事ではsrcディレクトリとその配下の各ファイルの機能について紹介しました。他のディレクトリとファイルの説明は次のとおりです。
ディレクトリ/ファイル | 説明する |
---|---|
テストディレクトリ | テストファイルを保存する |
.eslintrc.js | ESLintの設定ファイル |
.gitignore | Git で追跡する必要のないファイルを構成するために使用されます。 |
.prettierrc | Prettierの設定ファイル |
ネスト-cli.json | Nest プロジェクトの構成ファイル |
パッケージ.json | 依存関係、スクリプト コマンドなどのプロジェクト情報を記録します。 |
pnpm-lock.yaml | インストールされている依存関係のバージョン情報を記録してロックする |
tsconfig.build.json | TypeScript 構文ビルド用の構成ファイル |
tsconfig.json | TypeScript コンパイラの構成ファイル。コンパイル時にいくつかのオプションを設定するために使用されます。 |
scriptコマンドの概要
package.json
ファイルを開くと、@nest/cli
作成されたプロジェクトに 12 個のscripts
コマンドが提供されます。以下に示す、最も一般的に使用されるコマンドのいくつかを理解する必要があります。
"scripts": {
"build": "nest build",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
},
- build: 運用環境に適したコードをパッケージ化します。
- start: 開発中に Nest アプリを開始します。このコマンドを使用する場合は、コードを変更した後にサービスを手動で再起動する必要があります。
- start:dev: watch オプションを指定すると、コードが変更された後にサービスが自動的に再起動されるため、このスクリプトは通常、開発段階で使用されます。
- start:prod: 実際にnodeコマンドでビルドプロダクトのエントリーファイルを起動します。
- start:debug: コードをデバッグするためのデバッグ オプションがあります。
@nestjs/cli 共通コマンドの紹介
@nestjs/cli は、NestJS が公式に提供する非常に便利なスキャフォールディング ツールです。次のコマンドを実行して、@nestjs/cli が開発者に提供する便利なコマンドを確認します。
nest --help
- net new: すでに体験済みの Nest プロジェクトを作成します。
- ネストビルド: アプリケーションをビルドし、ソースコードを実稼働環境で使用されるコードとしてパッケージ化します。
- ネストスタート: 開発フェーズで使用されるアプリケーションを実行します。
- ネスト生成: ネスト要素を迅速に生成します。
ネスト生成
Mest要素とは何ですか?フロントエンドは HTML 要素を使用してページを構築します。HTML 要素は 1 つずつタグになります。Nest 要素も同様で、Nest アプリケーションを構成するには、Controller コントローラー、Service サービス、Module モジュール、Filter フィルター、Pipe パイプラインなどを使用する必要があります。
前回の記事では、Hello, World のサンプルコードを分析し、モジュール、コントローラー、サービスについて述べました。残りの Nest 要素が何であるか、その意味と機能が何であるかについては、後の記事で明らかになります。
このコマンドnest generate | g
を使用してこれらの Nest 要素を生成でき、テンプレートが提供されるため、開発者はこれらの基本構造を手動で構築する必要がありません。
ここに例を示します。
ユーザーモジュールを生成する
$ nest g module user
CREATE user/user.module.ts (81 bytes)
UPDATE app.module.ts (309 bytes)
user
ディレクトリとuser.module.ts
モジュール ファイルがsrc ディレクトリの下に作成されます。
生成されたユーザー モジュールのコード:
import {
Module } from '@nestjs/common';
import {
UserController } from './user.controller';
@Module({
controllers: [UserController]
})
export class UserModule {
}
新しいモジュールを生成するとき、スキャフォールディング ツールはモジュールの登録を自動的に完了します。
// app.module.ts 根模块
import {
UserModule } from './user/user.module';
@Module({
imports: [UserModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {
}
デコレータには、他のモジュールを受け入れるプロパティ@Module
がありますimports
。
ユーザーコントローラーとサービスを生成する
$ nest g controller user
CREATE user/user.controller.ts (97 bytes)
CREATE user/user.controller.spec.ts (478 bytes)
UPDATE user/user.module.ts (166 bytes)
$ nest g service user
CREATE user/user.service.spec.ts (446 bytes)
UPDATE user/user.module.ts (240 bytes)
src/user
自動的にディレクトリが検索され、関連ファイルの作成が完了します。コントローラーとサービスを生成すると、対応するテスト ファイルも一緒に生成されます。
コントローラーのコード:
import {
Controller } from '@nestjs/common';
@Controller('user')
export class UserController {
}
サービスのコード:
import {
Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
}
要約する
この記事では、一般的に使用されるいくつかのスクリプト コマンドと、generate
テンプレート コードの作成時間を大幅に節約できる @nest/cli スキャフォールディングによって提供されるコマンドに焦点を当てて、Nest アプリケーションのディレクトリ構造を紹介します。
読んでいただきありがとうございます。また次の記事でお会いしましょう。