ライセンス設定
前提
- 開発ライセンス購入済であること : localhost 用のライセンスキー発行
- 配布用ライセンス発行済であること : ドメイン単位で Web 管理画面から発行
対応内容
- 初回に1回だけ、
wjcCore.setLicenseKey(key)
を呼ぶ
初回呼ぶスクリプトを設定
docusaurus.config.ts
const config: Config = {
...
clientModules: [
require.resolve('./src/clientModules/set-wijmo-license')
],
};
src/clientModules/set-wijmo-license.ts
import License from '@site/src/utils/License';
License.setLicenseKey();
ライセンス設定用のクラス例
ローカルと公開用ドメインでライセンスキーが異なるので、呼び分けるもの。
src/utils/License.ts
import * as wjcCore from '@grapecity/wijmo';
export default class License {
public static setLicenseKey() {
if (typeof window !== 'undefined') {
const host = window.location.hostname;
const key = this.Keys.get(host);
if (key == null) {
console.error(`LicenseKey for [${host}] is not defined.`);
return;
}
console.log('set license');
wjcCore.setLicenseKey(key);
}
}
private static Keys: Map<string, string> = new Map([
['localhost' , 'XXXXXXXXXXXXXXXXXXXX'],
['sugoi-domain.com' , 'sugoi-domain.com,XXXXXXXXXXXX'],
]);
}
(参考) 改善案
こんなふうにした方が良いかもしれない
- setLicenseKey(process.env.WIJMO_LICENSE_KEY);
- .env ファイルに WIJMO_LICENSE_KEY=... として保存
ただ、こうするいは dotenv-webpack などの対応が必要(Docusaurus v3 は .env 読み込みにやや工夫が必要)
(参考) NGだった方式: src/theme/Layout/index.tsx の useEffect
src/theme/Layout/index.tsx
は初回で読み込まれるが、
Wijmo のライセンスチェックよりタイミングが遅いようだ。
src/theme/Layout/index.tsx
import React, { useEffect } from 'react';
import Layout from '@theme-original/Layout';
import License from '@site/src/utils/License';
export default function LayoutWrapper(props) {
useEffect(() => {
License.setLicenseKey();
}, []);
return <Layout {...props} />;
}