Skip to content

Commit

Permalink
更新ツールを更新
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiroshiba committed Nov 25, 2024
1 parent 9e90eef commit 8713d22
Show file tree
Hide file tree
Showing 10 changed files with 272 additions and 241 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
workflow_dispatch:

jobs:
lint:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -27,3 +27,5 @@ jobs:
- run: pnpm install

- run: pnpm run lint

- run: pnpm run build
125 changes: 121 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -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 - </dev/null 2>&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?
Expand All @@ -14,7 +122,7 @@ pnpm run eslint
- [ ] たぶん font-smoothing が効いてないけど macOS でちゃんと動くか確認
- [ ] Google Analytics を Partytown にしたい issue 作る、sendEvent が Partytown 上からしかできなくなるのをどう解決するか

### なんとなくのコーディングルールメモ
## なんとなくのコーディングルールメモ

- pages に置くアセット用のディレクトリはスネークケース
- インポート済みの画像は定数(constants)として良い
Expand All @@ -30,3 +138,12 @@ pnpm run eslint
- 静的ページやコンポーネントは Astro で作るのを意識すると楽
- 画像の読み込みとか、ディレクティブとかが便利
- 子へのスタイル適用は Astro 内の is:global を使うと楽

## LICENSE

VOICEVOX の開発のための利用のみ許可されます。
異なるライセンスを取得したい場合は、ヒホ(twitter: @hiho_karuta)に求めてください。

## 謝辞

- https://commons.nicovideo.jp/material/nc238325
132 changes: 0 additions & 132 deletions old-gatsby/README.md

This file was deleted.

2 changes: 2 additions & 0 deletions old-gatsby/news.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* TODO: Astro化する。
*/

/*
import { Link, graphql, useStaticQuery } from "gatsby"
import React from "react"
import "../../components/layout.scss"
Expand Down Expand Up @@ -59,3 +60,4 @@ const NewsIndex = () => {
}
export default NewsIndex
*/
2 changes: 2 additions & 0 deletions old-gatsby/newsPost.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
import { graphql } from "gatsby"
import React from "react"
import "../components/layout.scss"
Expand Down Expand Up @@ -45,3 +46,4 @@ export const query = graphql`
`
export default NewsPost
*/
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
3 changes: 2 additions & 1 deletion src/env.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
import "../.astro/types";
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference path="../.astro/types.d.ts" />
40 changes: 40 additions & 0 deletions src/tools/updateMarkdown.mts
Original file line number Diff line number Diff line change
@@ -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);
Loading

0 comments on commit 8713d22

Please sign in to comment.