メインコンテンツまでスキップ

Migration Guide v6

このドキュメントは、次のメジャーリリースで予定している破壊的変更と、アプリケーション、サンプル、ローカル開発環境で必要になる最小限の移行作業をまとめたものです。

破壊的変更

変更影響を受けるユーザー必要な対応
ESM-only パッケージrequire('@pdfme/...') を使っているユーザーimport / export 構文へ移行
Node 20+ 最低要件Node 16 / 18 ユーザーNode 20 LTS 以降へ更新
内部 dist/* import 廃止@pdfme/*/dist/...@pdfme/*/cjs/src/... を直接 import しているユーザーpackage root の public export のみを使用

サポートポリシー

項目方針
ランタイムNode 20+
ブラウザ向けターゲットes2020
モジュール形式ESM-only

移行方法

CommonJS から ESM へ

変更前:

const { BLANK_PDF } = require('@pdfme/common');
const { generate } = require('@pdfme/generator');

変更後:

import { BLANK_PDF } from '@pdfme/common';
import { generate } from '@pdfme/generator';

Node.js で ESM からファイルを書き出す場合は、__dirname の代わりに fileURLToPath(import.meta.url) を使います。

import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

パッケージ内部パスの廃止

変更前:

import { generate } from '@pdfme/generator/cjs/src/index.js';
import { pdf2img } from '@pdfme/converter/cjs/src/index.node.js';

変更後:

import { generate } from '@pdfme/generator';
import { pdf2img } from '@pdfme/converter';

Node 20+

次のメジャーリリースを採用する前に、ローカル開発環境と CI を Node 20 LTS 以降へ更新してください。

メンテナー向けチェックリスト

  • リリース前に GitHub Discussions または Issue で方針を告知する。
  • examples、docs、playground を public export のみ使う形に更新する。
  • Node 向けサンプルから require() を段階的に除去する。
  • ドキュメントに内部 dist/* import が残っていないことを確認する。