ライセンス
ワークスペース内のLICENSE
ファイルとソースコードヘッダーを自動的に管理します。
このジェネレータは同期ジェネレータを登録し、lint
ターゲットの一部として実行されます。これにより、ソースファイルが指定されたライセンスの内容と形式に準拠していることを保証し、プロジェクトのLICENSE
ファイルが正しいことを確認するとともに、関連するプロジェクトファイル(package.json
、pyproject.toml
)にライセンス情報が含まれるようにします。
使い方
ジェネレータの実行
- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)
"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - license
- 必須パラメータを入力
- クリック
Generate
pnpm nx g @aws/nx-plugin:license
yarn nx g @aws/nx-plugin:license
npx nx g @aws/nx-plugin:license
bunx nx g @aws/nx-plugin:license
オプション
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
license | string | Apache-2.0 | SPDX License Identifier for your chosen license |
copyrightHolder | string | Amazon.com, Inc. or its affiliates | The copyright holder, included in the LICENSE file and source file headers by default. |
ジェネレータの出力
ジェネレータは以下のファイルを作成または更新します:
- nx.json lintターゲットがライセンス同期ジェネレータを実行するように設定されます
- aws-nx-plugin.config.mts ライセンス同期ジェネレータの設定ファイル
いくつかのファイルタイプ向けのデフォルトライセンスヘッダー設定がaws-nx-plugin.config.mts
に追加されます。必要に応じて設定セクションを参照し、カスタマイズしてください。
ワークフロー
プロジェクトのビルド時に(lint
ターゲットが実行されると)、ライセンス同期ジェネレータが設定に基づいてプロジェクトのライセンスをチェックします。ライセンス同期動作で説明するように、同期が必要な変更を検出すると次のようなメッセージが表示されます:
NX ワークスペースが同期されていません
[@aws/nx-plugin:license#sync]: プロジェクトLICENSEファイルが同期されていません:- LICENSE- packages/<my-project>LICENSE
プロジェクトpackage.jsonファイルが同期されていません:- package.json
プロジェクトpyproject.tomlファイルが同期されていません:- pyproject.toml- packages/<my-python-project>/pyproject.toml
以下のソースファイルのライセンスヘッダーが同期されていません:- packages/<my-project>/src/index.ts- packages/<my-python-project>/main.py
この状態ではCIでエラーが発生します。
? 検出された変更を同期してワークスペースを最新状態にしますか?はい、変更を同期してタスクを実行しますいいえ、同期せずにタスクを実行します
はい
を選択して変更を同期します。
ライセンス同期動作
ライセンス同期ジェネレータは3つの主要なタスクを実行します:
1. ソースファイルのライセンスヘッダー同期
同期ジェネレータは、設定に基づきワークスペース内のすべてのソースコードファイルに適切なライセンスヘッダーが含まれるようにします。ヘッダーはファイルの先頭にブロックコメントまたは連続したラインコメントとして書き込まれます(shebang/hashbangが存在する場合はその後に配置されます)。
ファイルタイプごとの対象ファイルやヘッダー内容・形式は設定で変更可能です。詳細は設定セクションを参照してください。
2. LICENSEファイルの同期
同期ジェネレータは、ルートのLICENSE
ファイルが設定されたライセンスに一致することを保証し、ワークスペース内のすべてのサブプロジェクトにも正しいLICENSE
ファイルが存在するようにします。
プロジェクトの除外設定が可能です。詳細は設定セクションを参照してください。
3. プロジェクトファイルのライセンス情報同期
同期ジェネレータは、package.json
とpyproject.toml
ファイルのlicense
フィールドが設定されたライセンスに一致するようにします。
プロジェクトの除外設定が可能です。詳細は設定セクションを参照してください。
設定
設定はワークスペースルートのaws-nx-plugin.config.mts
ファイルで定義されます。
SPDXと著作権者
ライセンスはspdx
設定プロパティでいつでも更新可能です:
export default { license: { spdx: 'MIT', },} satisfies AwsNxPluginConfig;
同期ジェネレータ実行時、すべてのLICENSE
ファイル、package.json
、pyproject.toml
ファイルが設定されたライセンスに更新されます。
著作権者と著作権年も追加設定可能です:
export default { license: { spdx: 'MIT', copyrightHolder: 'Amazon.com, Inc. or its affiliates', copyrightYear: 2025, },} satisfies AwsNxPluginConfig;
ライセンスヘッダー
内容
ライセンスヘッダーの内容は2通りの方法で設定可能です:
- インラインコンテンツ:
export default { license: { header: { content: { lines: [ 'Copyright: My Company, Incorporated.', 'Licensed under the MIT License', 'All rights reserved', ]; } // ... フォーマット設定 } }} satisfies AwsNxPluginConfig;
- ファイルからの読み込み:
export default { license: { header: { content: { filePath: 'license-header.txt'; // ワークスペースルートからの相対パス } // ... フォーマット設定 } }} satisfies AwsNxPluginConfig;
フォーマット
ファイルタイプごとにグロブパターンでライセンスヘッダーのフォーマットを指定可能です:
export default { license: { header: { content: { lines: ['Copyright notice here'], }, format: { // ラインコメント '**/*.ts': { lineStart: '// ', }, // ブロックコメント '**/*.css': { blockStart: '/*', blockEnd: '*/', }, // 接頭辞付きブロックコメント '**/*.java': { blockStart: '/*', lineStart: ' * ', blockEnd: ' */', }, // ヘッダー/フッター付きラインコメント '**/*.py': { blockStart: '# ------------', lineStart: '# ', blockEnd: '# ------------', }, }, }, },} satisfies AwsNxPluginConfig;
サポートされるフォーマット設定:
blockStart
: ライセンスコンテンツ前に記述するテキスト(ブロックコメント開始など)lineStart
: ライセンス各行の先頭に付与するテキストlineEnd
: ライセンス各行の末尾に付与するテキストblockEnd
: ライセンスコンテンツ後に記述するテキスト(ブロックコメント終了など)
カスタムコメント構文
ネイティブでサポートされていないファイルタイプ向けに、カスタムコメント構文を定義可能です:
export default { license: { header: { content: { lines: ['My license header'], }, format: { '**/*.xyz': { lineStart: '## ', }, }, commentSyntax: { xyz: { line: '##', // ラインコメント構文 }, abc: { block: { // ブロックコメント構文 start: '<!--', end: '-->', }, }, }, }, },} satisfies AwsNxPluginConfig;
ファイルの除外
デフォルトでgitリポジトリの場合、バージョン管理対象外のファイルを同期しないよう.gitignore
が適用されます。git以外のリポジトリでは、明示的に除外しない限りすべてのファイルが対象になります。
グロブパターンでライセンスヘッ�ダー同期から除外するファイルを指定可能です:
export default { license: { header: { content: { lines: ['My license header'], }, format: { '**/*.ts': { lineStart: '// ', }, }, exclude: ['**/generated/**', '**/dist/**', 'some-specific-file.ts'], }, },} satisfies AwsNxPluginConfig;
プロジェクトファイルの同期除外
デフォルトですべてのLICENSE
、package.json
、pyproject.toml
ファイルが同期対象となります。
グロブパターンで特定のプロジェクトやファイルを同期から除外可能です:
export default { license: { files: { exclude: [ // LICENSEファイル、package.json、pyproject.tomlを同期しない 'packages/excluded-project', // LICENSEファイルは同期しないが、package.json/pyproject.tomlは同期する 'apps/internal/LICENSE', ]; } }} satisfies AwsNxPluginConfig;
ライセンス同期の無効化
ライセンス同期を無効化するには:
aws-nx-plugin.config.mts
からlicense
セクションを削除(またはファイル自体を削除)targetDefaults.lint.syncGenerators
から@aws/nx-plugin:license#sync
ジェネレータを削除
再度有効化するにはlicense
ジェネレータを再実行します。