独自 DWG コンバーターのインストールと使用
このガイドでは、独自の DWG パーサーパッケージ @mlightcad/dwg-converter を cad-viewer のデータモデルにインストールおよび登録する方法について説明します。
ライセンス、試用アクセス、価格、GPL コンプライアンスについては、メインリポジトリの PROPRIETARY-PARSER.md を参照してください。
前提条件: GitHub アカウントが、プライベートパッケージへの読み取りアクセス権をすでに持っている必要があります(試用または購入の承認後に付与されます)。
概要
@mlightcad/dwg-converterは GitHub Packages に公開されています。- その他の
@mlightcad/*パッケージ(例:@mlightcad/data-model、@mlightcad/cad-viewer)は、公開 npm レジストリに公開されています。 - npm と pnpm はスコープレベルのレジストリマッピングのみをサポートしており、同一スコープ内でのパッケージレベルの公式なレジストリマッピングはありません。
つまり、次の設定を使用して @mlightcad/dwg-converter だけを取得することはできません:
@mlightcad:registry=https://npm.pkg.github.comそうすると、すべての @mlightcad/* パッケージが GitHub Packages にルーティングされ、公開パッケージのインストールが壊れます。
バージョンに関する注意: 以下の例の 1.2.3(およびタールボールのハッシュ)は、実際に提供された正確なバージョンに置き換えてください。
read:packages 権限を持つ GITHUB_TOKEN の作成
GitHub Packages は現在、**個人アクセストークン(classic)**で認証します。npm レジストリでは fine-grained トークンはサポートされていません。
パッケージへのアクセス権を持つアカウントで GitHub にサインインします。
Settings → Developer settings → Personal access tokens → Tokens (classic) を開きます
(直接リンク:https://github.com/settings/tokens)。Generate new token → Generate new token (classic) をクリックします。
トークンに名前を付け(例:
dwg-converter-install)、セキュリティポリシーに合った有効期限を設定します。Select scopes で
read:packagesを有効にします。インストールのみの用途では、write:packagesやdelete:packagesは必要ありません。Generate token をクリックし、すぐにコピーします(一度しか表示されません)。
GITHUB_TOKENとして公開します:bash# macOS / Linux export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Windows PowerShell $env:GITHUB_TOKEN = "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Windows CMD set GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxクライアントが GitHub Packages と直接通信する場合(以下のオプション 2)、
.npmrcにホストレベルの認証エントリを追加します:ini//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}これは
npm.pkg.github.comにのみ認証情報を付加します。@mlightcadスコープを再マッピングするものではありません。@mlightcad:registry=https://npm.pkg.github.comを追加しないでください。pnpm installはこのファイルを読み取ります。npm viewは、ワークスペースパッケージから実行した場合、このファイルを読み取りません。npm 8.5 以降、CLI はそのパッケージの.npmrcを無視し(ignoring workspace config)、GITHUB_TOKENが設定されていてもトークンなしでリクエストを送信します(401 Unauthorized - authentication token not provided)。npm viewコマンド自体にトークンを渡してください。オプション 2 を参照してください。モノレポでは、このファイルをワークスペースのルートに配置します。メンバーパッケージ内だけにある
.npmrcは、npm がスキップするファイルです。オプション 1(プライベートレジストリプロキシ)を使用する場合、通常クライアントはこの行を必要としません。代わりにプロキシ側にトークンを設定します。
セキュリティ上の注意
- トークンはパスワードと同様に扱ってください。git にコミットしたり、公開 issue に貼り付けたりしないでください。
.npmrcにトークンをハードコーディングするより、環境変数(または CI のシークレットストア)を使用することを推奨します。- GitHub Actions では、リポジトリシークレット(例:
GH_PACKAGES_TOKEN)をインストールジョブのGITHUB_TOKEN/NODE_AUTH_TOKENにマッピングします。
インストールオプション
以下のいずれか1 つを選択してください。
オプション 1:npm と GitHub Packages をプロキシする統合プライベートレジストリ
プライベート npm レジストリ(Verdaccio、JFrog Artifactory、Sonatype Nexus、またはクラウドベンダーの npm レジストリ)を運営している(またはすでに使用している)場合は、クライアントをそのレジストリに向け、パッケージごとの上流をレジストリに決定させます:
┌── npmjs.org (@mlightcad/data-model, …)
client ──→ private registry
└── GitHub Packages (@mlightcad/dwg-converter)クライアントの .npmrc:
registry=https://npm.example.com/プライベートレジストリを次のように設定します:
| パッケージ | 上流 |
|---|---|
@mlightcad/foo(公開パッケージ) | https://registry.npmjs.org |
@mlightcad/dwg-converter | https://npm.pkg.github.com |
その後、通常どおりインストールします:
pnpm add @mlightcad/dwg-converter@1.2.3すでにプライベートレジストリを維持している場合は、これが長期的に最もクリーンな構成です。GitHub Packages を 1 ~ 2 個だけ必要とする小規模プロジェクトでは、通常オプション 2 のほうが軽量です。
オプション 2:@mlightcad/dwg-converter を GitHub Packages のタールボール URL に固定する
パッケージを タールボール URL として package.json に固定し、@mlightcad スコープのレジストリ経由で解決する代わりに、パッケージマネージャーがその URL を直接ダウンロードするようにします。
GitHub Packages に対して認証します(タールボール URL は認証をバイパスしません):
ini# .npmrc registry=https://registry.npmjs.org/ //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}必要なバージョンのタールボール URL を解決します。
このコマンドではプロジェクトの
.npmrcに依存しないでください。npm viewはワークスペースパッケージの.npmrcを無視するため、そのファイル内の${GITHUB_TOKEN}は適用されません。コマンドラインでトークンを渡します:bash# macOS / Linux npm view @mlightcad/dwg-converter@1.2.3 dist.tarball \ --registry=https://npm.pkg.github.com \ --//npm.pkg.github.com/:_authToken="${GITHUB_TOKEN}"powershell# Windows PowerShell npm view @mlightcad/dwg-converter@1.2.3 dist.tarball ` --registry=https://npm.pkg.github.com ` --//npm.pkg.github.com/:_authToken="$env:GITHUB_TOKEN"batREM Windows CMD npm view @mlightcad/dwg-converter@1.2.3 dist.tarball --registry=https://npm.pkg.github.com --//npm.pkg.github.com/:_authToken=%GITHUB_TOKEN%手順 1 の
.npmrcエントリは引き続き必要です。pnpm installはタールボールをダウンロードする際にこれを使用します。出力例:
texthttps://npm.pkg.github.com/download/@mlightcad/dwg-converter/1.2.3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxその URL を
package.jsonに記述します(ご自身のバージョンとタールボール URL を使用してください):json{ "dependencies": { "@mlightcad/data-model": "^1.0.0", "@mlightcad/dwg-converter": "https://npm.pkg.github.com/download/@mlightcad/dwg-converter/1.2.3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } }インストールします:
bashpnpm install
注意事項
- アップグレードするには、新しいタールボール URL を取得して
package.json/ ロックファイルを更新する必要があります。 - CI およびローカルインストールでは、読み取りアクセス権を持つ有効な GitHub トークンが引き続き必要です。
.npmrcの GitHub Packages 認証エントリを維持してください。
オプション 2 は評価や小規模チームに適しています。頻繁なアップグレードや多数のプライベートパッケージが見込まれる場合は、オプション 1(または @mlightcad-private/* のような別のプライベートスコープを GitHub Packages にマッピングする方法)を推奨します。
コンバーターの登録
独自パーサーは、オープンソーススタックと同じパイプラインに組み込むことができる登録可能なコンバーターです。
- 出力は MIT ライセンスの
@mlightcad/data-modelに準拠しています:AcDbDatabase、AcDb*エンティティ、レイヤテーブル、ブロック、および関連構造。 AcDbDatabaseConverterManagerを介して登録します。これはAcDbLibreDwgConverterと同じメカニズムです。- 解析後は、既存の MIT ライセンスのレンダリング、レイヤ、選択、インタラクションのパイプライン(
cad-simple-viewer、cad-viewer、プラグインなど)がそのまま動作します。
import { AcDbDatabaseConverterManager, AcDbFileType } from '@mlightcad/data-model'
import { AcDbDwgConverter } from '@mlightcad/dwg-converter'
const converter = new AcDbDwgConverter({ /* options */ })
AcDbDatabaseConverterManager.instance.register(AcDbFileType.DWG, converter)このパッケージは、単独で「DWG を解析する」API を公開していません。オープンソースの libredwg-converter と同様に、AcDbDatabaseConverter を実装しています。変換後は、@mlightcad/data-model を通じて結果の図面を操作します。
コンプライアンスのために独自パーサーに依存する場合は、GPL ベースの libredwg-converter も登録しないでください。
動作する完全なサンプル(認証、worker アセット、登録、データベースの参照)については、realdwg-web-example を参照してください。
関連ページ
- Worker URL の設定 — DWG/DXF パーサー向けの worker URL 設定
- PROPRIETARY-PARSER.md — 商用ライセンス、試用、GPL に関する注意
- 開発ガイド — 開発者向けトピックの索引