From 8713d22e050200bf844cec2b595afb6a3dcdc501 Mon Sep 17 00:00:00 2001 From: Hiroshiba Date: Mon, 25 Nov 2024 18:52:41 +0900 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=83=84=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 4 +- README.md | 125 +++++++++++++++++++++++++++++++-- old-gatsby/README.md | 132 ----------------------------------- old-gatsby/news.tsx | 2 + old-gatsby/newsPost.tsx | 2 + package.json | 3 +- src/env.d.ts | 3 +- src/tools/updateMarkdown.mts | 40 +++++++++++ src/tools/updateVersion.mts | 100 ++++++++++++++++++++++++++ src/tools/updateVersion.ts | 102 --------------------------- 10 files changed, 272 insertions(+), 241 deletions(-) delete mode 100644 old-gatsby/README.md create mode 100644 src/tools/updateMarkdown.mts create mode 100644 src/tools/updateVersion.mts delete mode 100644 src/tools/updateVersion.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 574be391..2adcac4e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - lint: + test: runs-on: ubuntu-latest steps: - name: Checkout @@ -27,3 +27,5 @@ jobs: - run: pnpm install - run: pnpm run lint + + - run: pnpm run build diff --git a/README.md b/README.md index 21e64045..5d8a4229 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,118 @@ -```sh +# VOICEVOX BLOG + +VOICEVOX の公式サイトのリポジトリです。 +https://voicevox.hiroshiba.jp/ + +## 環境構築 + +Node v20.12.2、pnpm v9.12.3 を用いて開発されています。 + +```bash +npm install -g pnpm +pnpm install +``` + +## ローカル環境でチェック + +```bash pnpm start +``` + +## deploy + +```bash +pnpm run deploy +``` -pnpm run eslint +### プレビュー版 + +[プレビュー版ページ](https://preview--voicevox.netlify.app/) + +Netlify を使ってプレビュー環境デプロイを行っています。 +`preview`ブランチに push すると、Netlify のプレビュー環境にデプロイされます。 + +## リソース情報の更新 + +コードの更新 + +```bash +EDITOR_VERSION="0.21.1" +RESOURCE_VERSION="0.21.1" +NEMO_VERSION="0.21.0" + +pnpm run updateVersion \ + --editor_version="$EDITOR_VERSION" \ + --resource_version="$RESOURCE_VERSION" \ + --nemo_version="$NEMO_VERSION" ``` -### TODO +リソースの更新 + +```bash +editor_tag="0.21.1" +editor_url="https://raw.githubusercontent.com/VOICEVOX/voicevox/$editor_tag" + +resource_tag="0.21.1" +resource_url="https://raw.githubusercontent.com/VOICEVOX/voicevox_resource/$resource_tag" + +# 規約 +curl -s "$resource_url/editor/README.md" | + pnpm run updateMarkdown -t "src/pages/term.md" + +# 使い方 +curl -s "$editor_url/public/howtouse.md" | + sed -r 's|src="([^"]+?)"|src="'$editor_url'/public/\1"|g' | + pnpm run updateMarkdown -t "src/pages/how_to_use.md" + +# Q&A +curl -s "$editor_url/public/qAndA.md" | + pnpm run updateMarkdown -t "src/pages/qa/index.md" + +# 変更履歴 +curl -s "$editor_url/public/updateInfos.json" \ + >src/pages/update_history/updateInfos.json + +# デフォルトエンジンの更新情報 +pnpm run generateLatestDefaultEngineInfos +``` + +## 音量に関して + +ffmpeg で音量を調べて、だいたい LUFS 値が -20~-23 になるように調整しています。 + +```bash +# 音量を調べる +audio_file=audio.wav +ffmpeg -nostats -i $audio_file -filter_complex ebur128 -f null - &1 | + grep -3 "Integrated loudness:" | + grep "I:" | + tail -n1 + +# 音量を調整する(例えば -17 LUFS を -20 LUFS くらいにしたい場合は volume=-3dB にする) +audio_file=audio.wav +output_file=output.wav +ffmpeg -i $audio_file -af volume=-3dB $output_file +``` + +## サムネイル生成 + +一部のサムネイルは HTML をレンダリングしたものを画像化しています。 +次のコマンドで更新してください。 + +```bash +# 起動 +pnpm start + +# しばらくしてから実行 +pnpm run generateThumb +``` + +## タイポチェック + +[typos](https://github.com/crate-ci/typos) を使ってタイポのチェックを行っています。 +ブランチをプッシュすると自動でテストされます。 + +## TODO - [ ] sitemap の比較、dev が含まれてないことを確認 - [ ] ニュースの RSS? @@ -14,7 +122,7 @@ pnpm run eslint - [ ] たぶん font-smoothing が効いてないけど macOS でちゃんと動くか確認 - [ ] Google Analytics を Partytown にしたい issue 作る、sendEvent が Partytown 上からしかできなくなるのをどう解決するか -### なんとなくのコーディングルールメモ +## なんとなくのコーディングルールメモ - pages に置くアセット用のディレクトリはスネークケース - インポート済みの画像は定数(constants)として良い @@ -30,3 +138,12 @@ pnpm run eslint - 静的ページやコンポーネントは Astro で作るのを意識すると楽 - 画像の読み込みとか、ディレクティブとかが便利 - 子へのスタイル適用は Astro 内の is:global を使うと楽 + +## LICENSE + +VOICEVOX の開発のための利用のみ許可されます。 +異なるライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。 + +## 謝辞 + +- https://commons.nicovideo.jp/material/nc238325 diff --git a/old-gatsby/README.md b/old-gatsby/README.md deleted file mode 100644 index d8da7a15..00000000 --- a/old-gatsby/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# VOICEVOX BLOG - -VOICEVOX の公式サイトのリポジトリです。 -https://voicevox.hiroshiba.jp/ - -## 環境構築 - -Node v18.13.0、npm v8.19.3 を用いて開発されています。 - -```bash -npm ci -``` - -## ローカル環境でチェック - -```bash -npm run develop -``` - -もしくは - -```bash -npm run build && npm run serve -``` - -## deploy - -```bash -npm run deploy -``` - -### プレビュー版 - -[プレビュー版ページ](https://preview--voicevox.netlify.app/) - -Netlify を使ってプレビュー環境デプロイを行っています。 -`preview`ブランチに push すると、Netlify のプレビュー環境にデプロイされます。 - -```bash -# ビルド -npm run preview-build -``` - -## リソース情報の更新 - -コードの更新 - -```bash -EDITOR_VERSION="0.21.1" -RESOURCE_VERSION="0.21.1" -NEMO_VERSION="0.21.0" - -npm run updateVersion -- \ - --editor_version="$EDITOR_VERSION" \ - --resource_version="$RESOURCE_VERSION" \ - --nemo_version="$NEMO_VERSION" -``` - -リソースの更新 - -```bash -editor_tag="0.21.1" -editor_url="https://raw.githubusercontent.com/VOICEVOX/voicevox/$editor_tag" - -resource_tag="0.21.1" -resource_url="https://raw.githubusercontent.com/VOICEVOX/voicevox_resource/$resource_tag" - -# 規約 -curl -s "$resource_url/editor/README.md" > src/markdowns/softwareReadme.md - -# 使い方 -curl -s "$editor_url/public/howtouse.md" > src/markdowns/howToUse.md -sed -r 's|src="([^"]+?)"|src="'$editor_url'/public/\1"|g' -i src/markdowns/howToUse.md - -# Q&A -curl -s "$editor_url/public/qAndA.md" > src/markdowns/qAndA.md - -# 変更履歴 -curl -s "$editor_url/public/updateInfos.json" > src/data/updateInfos.json - -# デフォルトエンジンの更新情報 -npm run generateLatestDefaultEngineInfos -``` - -## 音量に関して - -ffmpeg で音量を調べて、だいたい LUFS 値が -20~-23 になるように調整しています。 - -```bash -# 音量を調べる -audio_file=audio.wav -ffmpeg -nostats -i $audio_file -filter_complex ebur128 -f null - &1 | - grep -3 "Integrated loudness:" | - grep "I:" | - tail -n1 - -# 音量を調整する(例えば -17 LUFS を -20 LUFS くらいにしたい場合は volume=-3dB にする) -audio_file=audio.wav -output_file=output.wav -ffmpeg -i $audio_file -af volume=-3dB $output_file -``` - -## サムネイル生成 - -一部のサムネイルは HTML をレンダリングしたものを画像化しています。 -次のコマンドで更新してください。 - -```bash -# 起動 -npm run develop - -# しばらくしてから実行 -npm run generateThumb -``` - -## タイポチェック - -[typos](https://github.com/crate-ci/typos) を使ってタイポのチェックを行っています。 -[typos をインストール](https://github.com/crate-ci/typos#install) した後 - -```bash -typos -``` - -## LICENSE - -VOICEVOX の開発のための利用のみ許可されます。 -異なるライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。 - -## 謝辞 - -`src/images/nc238325.jpg` ・・・ https://commons.nicovideo.jp/material/nc238325 diff --git a/old-gatsby/news.tsx b/old-gatsby/news.tsx index 693c1452..21a858c1 100644 --- a/old-gatsby/news.tsx +++ b/old-gatsby/news.tsx @@ -3,6 +3,7 @@ * TODO: Astro化する。 */ +/* import { Link, graphql, useStaticQuery } from "gatsby" import React from "react" import "../../components/layout.scss" @@ -59,3 +60,4 @@ const NewsIndex = () => { } export default NewsIndex +*/ diff --git a/old-gatsby/newsPost.tsx b/old-gatsby/newsPost.tsx index 98bdbc87..868fd9ba 100644 --- a/old-gatsby/newsPost.tsx +++ b/old-gatsby/newsPost.tsx @@ -1,3 +1,4 @@ +/* import { graphql } from "gatsby" import React from "react" import "../components/layout.scss" @@ -45,3 +46,4 @@ export const query = graphql` ` export default NewsPost +*/ diff --git a/package.json b/package.json index 23b99b96..2b3de98c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "fmt": "eslint src/ --fix", "generateThumb": "tsx ./src/tools/generateThumb.mts", "generateLatestDefaultEngineInfos": "tsx ./src/tools/generateLatestDefaultEngineInfos.ts", - "updateVersion": "tsx ./src/tools/updateVersion.ts" + "updateVersion": "tsx ./src/tools/updateVersion.mts", + "updateMarkdown": "tsx ./src/tools/updateMarkdown.mts" }, "dependencies": { "@astrojs/check": "0.9.4", diff --git a/src/env.d.ts b/src/env.d.ts index a0d9b9f0..16054e38 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1 +1,2 @@ -import "../.astro/types"; +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// diff --git a/src/tools/updateMarkdown.mts b/src/tools/updateMarkdown.mts new file mode 100644 index 00000000..15395599 --- /dev/null +++ b/src/tools/updateMarkdown.mts @@ -0,0 +1,40 @@ +/** + * マークダウンファイルを標準入力のものに更新する。 + * すでにフロントマターが書かれていることを前提とする。 + */ + +import { parseArgs } from "node:util"; +import fs from "fs"; + +const argv = parseArgs({ + options: { + target: { type: "string", short: "t" }, + }, +}).values; +const { target } = argv; + +console.log(`target: ${target}`); + +if (target == undefined) { + throw new Error("targetを指定してください"); +} +if (!fs.existsSync(target)) { + throw new Error(`ファイルが存在しません: ${target}`); +} + +// フロントマターを取得 +const frontmatter = fs + .readFileSync(target, "utf-8") + .match(/^---(\r?)\n(.*?)(\r?)\n---/s); +if (frontmatter == null) { + throw new Error("フロントマターが見つかりませんでした"); +} + +// 入力マークダウンで置き換え +const chunks = []; +for await (const chunk of process.stdin) chunks.push(chunk); +const input = Buffer.concat(chunks).toString("utf8"); +const output = frontmatter[0] + "\n\n" + input; + +// ファイルに書き込み +fs.writeFileSync(target, output); diff --git a/src/tools/updateVersion.mts b/src/tools/updateVersion.mts new file mode 100644 index 00000000..9bcb86d9 --- /dev/null +++ b/src/tools/updateVersion.mts @@ -0,0 +1,100 @@ +/** + * このブログからダウンロードするVOICEVOXのバージョンを更新するスクリプト。 + * 複数箇所に書かれているバージョンを書き換える必要があり、それを一括で行える。 + */ + +import fs from "fs"; +import { parseArgs } from "node:util"; + +const argv = parseArgs({ + options: { + editor_version: { type: "string" }, + resource_version: { type: "string" }, + nemo_version: { type: "string" }, + }, +}).values; +const { + editor_version: editorVersion, + resource_version: resourceVersion, + nemo_version: nemoVersion, +} = argv; + +function updateFile(path: string, before: RegExp, after: string) { + if (!fs.existsSync(path)) { + throw new Error(`ファイルが存在しません: パス "${path}"`); + } + + const file = fs.readFileSync(path, "utf-8"); + if (!before.test(file)) { + throw new Error( + `置き換え対象が存在しません: パス "${path}": 正規表現 "${before}"`, + ); + } + + const updated = file.replace(before, after); + fs.writeFileSync(path, updated); +} + +console.log(`editor_version: ${editorVersion}`); +console.log(`resource_version: ${resourceVersion}`); +console.log(`nemo_version: ${nemoVersion}`); + +// README.md +if (editorVersion != undefined) { + updateFile( + "./README.md", + /editor_tag=".*?"/, + `editor_tag="${editorVersion}"`, + ); +} +if (resourceVersion != undefined) { + updateFile( + "./README.md", + /resource_tag=".*?"/, + `resource_tag="${resourceVersion}"`, + ); +} + +// src/constants/index.ts +if (editorVersion != undefined) { + updateFile( + "./src/constants/index.ts", + /export const APP_VERSION = ".*?"/, + `export const APP_VERSION = "${editorVersion}"`, + ); +} +if (nemoVersion != undefined) { + updateFile( + "./src/constants/index.ts", + /export const NEMO_VERSION = ".*?"/, + `export const NEMO_VERSION = "${nemoVersion}"`, + ); +} + +// src/assets/script/linuxInstallCpu.sh +if (editorVersion != undefined) { + updateFile( + "./src/assets/script/linuxInstallCpu.sh", + /VOICEVOX\/voicevox\/.*?\//, + `VOICEVOX/voicevox/${editorVersion}/`, + ); + updateFile( + "./src/assets/script/linuxInstallCpu.sh", + /VERSION=.*?\s/, + `VERSION=${editorVersion} `, + ); +} + +// src/assets/script/linuxInstallNvidia.sh +if (editorVersion != undefined) { + updateFile( + "./src/assets/script/linuxInstallNvidia.sh", + /VOICEVOX\/voicevox\/.*?\//, + `VOICEVOX/voicevox/${editorVersion}/`, + ); + updateFile( + "./src/assets/script/linuxInstallNvidia.sh", + /VERSION=.*?\s/, + `VERSION=${editorVersion} `, + ); +} diff --git a/src/tools/updateVersion.ts b/src/tools/updateVersion.ts deleted file mode 100644 index 1431eb18..00000000 --- a/src/tools/updateVersion.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * このブログからダウンロードするVOICEVOXのバージョンを更新するスクリプト。 - * 複数箇所に書かれているバージョンを書き換える必要があり、それを一括で行える。 - */ - -import fs from "fs"; -import { parseArgs } from "util"; - -const argv = parseArgs({ - options: { - editor_version: { type: "string" }, - resource_version: { type: "string" }, - nemo_version: { type: "string" }, - }, -}).values; - -function updateFile(path: string, before: RegExp, after: string) { - if (!fs.existsSync(path)) { - throw new Error(`ファイルが存在しません: パス "${path}"`); - } - - const file = fs.readFileSync(path, "utf-8"); - if (!before.test(file)) { - throw new Error( - `置き換え対象が存在しません: パス "${path}": 正規表現 "${before}"`, - ); - } - - const updated = file.replace(before, after); - fs.writeFileSync(path, updated); -} - -async function main() { - const editorVersion = argv.editor_version; - const resourceVersion = argv.resource_version; - const nemoVersion = argv.nemo_version; - - console.log(`editor_version: ${editorVersion}`); - console.log(`resource_version: ${resourceVersion}`); - console.log(`nemo_version: ${nemoVersion}`); - - // README.md - if (editorVersion != undefined) { - updateFile( - "./README.md", - /editor_tag=".*?"/, - `editor_tag="${editorVersion}"`, - ); - } - if (resourceVersion != undefined) { - updateFile( - "./README.md", - /resource_tag=".*?"/, - `resource_tag="${resourceVersion}"`, - ); - } - - // src/constants.ts - if (editorVersion != undefined) { - updateFile( - "./src/constants.ts", - /export const APP_VERSION = ".*?"/, - `export const APP_VERSION = "${editorVersion}"`, - ); - } - if (nemoVersion != undefined) { - updateFile( - "./src/constants.ts", - /export const NEMO_VERSION = ".*?"/, - `export const NEMO_VERSION = "${nemoVersion}"`, - ); - } - - // src/scripts/linuxInstallCpu.sh - if (editorVersion != undefined) { - updateFile( - "./src/scripts/linuxInstallCpu.sh", - /VOICEVOX\/voicevox\/.*?\//, - `VOICEVOX/voicevox/${editorVersion}/`, - ); - updateFile( - "./src/scripts/linuxInstallCpu.sh", - /VERSION=.*?\s/, - `VERSION=${editorVersion} `, - ); - } - - // src/scripts/linuxInstallNvidia.sh - if (editorVersion != undefined) { - updateFile( - "./src/scripts/linuxInstallNvidia.sh", - /VOICEVOX\/voicevox\/.*?\//, - `VOICEVOX/voicevox/${editorVersion}/`, - ); - updateFile( - "./src/scripts/linuxInstallNvidia.sh", - /VERSION=.*?\s/, - `VERSION=${editorVersion} `, - ); - } -} -main();