From 4f06cfd1bcc7dd54dc6c4dd6f388829b0383ab6d Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 20 Aug 2021 21:34:56 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20meta.json=E3=82=92import=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #7671 --- CONTRIBUTING.md | 3 +++ src/boot/master.ts | 10 +++++++++- src/config/load.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b16d9a75d..b3c67ff4d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -250,6 +250,9 @@ npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前 ### コネクションには`markRaw`せよ **Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。 +### JSONのimportに気を付けよう +TypeScriptでjsonをimportすると、tscでコンパイルするときにそのjsonファイルも一緒にdistディレクトリに吐き出されてしまう。この挙動により、意図せずファイルの書き換えが発生することがあるので、jsonをimportするときは書き換えられても良いものかどうか確認すること。書き換えされて欲しくない場合は、importで読み込むのではなく、`fs.readFileSync`などの関数を使って読み込むようにすればよい。 + ## その他 ### HTMLのクラス名で follow という単語は使わない 広告ブロッカーで誤ってブロックされる diff --git a/src/boot/master.ts b/src/boot/master.ts index 03a28c339..d9cc7c16b 100644 --- a/src/boot/master.ts +++ b/src/boot/master.ts @@ -1,3 +1,6 @@ +import * as fs from 'fs'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; import * as os from 'os'; import * as cluster from 'cluster'; import * as chalk from 'chalk'; @@ -11,7 +14,12 @@ import { lessThan } from '@/prelude/array'; import { program } from '../argv'; import { showMachineInfo } from '@/misc/show-machine-info'; import { initDb } from '../db/postgre'; -import * as meta from '../meta.json'; + +//const _filename = fileURLToPath(import.meta.url); +const _filename = __filename; +const _dirname = dirname(_filename); + +const meta = JSON.parse(fs.readFileSync(`${_dirname}/../meta.json`, 'utf-8')); const logger = new Logger('core', 'cyan'); const bootLogger = logger.createSubLogger('boot', 'magenta', false); diff --git a/src/config/load.ts b/src/config/load.ts index 6a1cf60a4..c7965e6c4 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -7,7 +7,6 @@ import { fileURLToPath } from 'url'; import { dirname } from 'path'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import * as meta from '../meta.json'; //const _filename = fileURLToPath(import.meta.url); const _filename = __filename; @@ -26,6 +25,7 @@ const path = process.env.NODE_ENV === 'test' : `${dir}/default.yml`; export default function load() { + const meta = JSON.parse(fs.readFileSync(`${_dirname}/../meta.json`, 'utf-8')); const config = yaml.load(fs.readFileSync(path, 'utf-8')) as Source; const mixin = {} as Mixin;