👌

zennのslugをいい感じにつける

2023/01/12に公開

slug とは、記事や本に紐付けるユニークな ID です。URL にも利用されるので、基本的には公開後は変更することができません。
Zenn CLI で特に指定しないで記事を作成すると、slug はランダムな値で作成されます。
これはファイルの名前にもなったりするので、ランダムだと後々にメンテナンスが面倒な事になります。

slug を指定する

公式記事にも書いてありますが、記事を作成するときに slug オプションで指定することができます。

npx zenn new:article --slug good-something-slug
# => 'articles/good-something-slug.md'が作成される

私は npm の scripts を使うのが好きなので、slug を引数にとって次のようにできそうです。

package.json
{
  ...
  "scripts": {
    "new:article": "npx zenn new:article --slug $npm_config_slug"
  }
  ...
}

以下は、先ほどと同じ結果になります。

npm run new:article -slug=good-something-slug
# => 'articles/good-something-slug.md'が作成される

ただ、記事を作成するたびに slug を指定するのは面倒だと感じたので、最終的に git の branch と作成日を組み合わせて指定することにしました。

package.json
{
  "scripts": {
    "new:article": "npx zenn new:article --slug $(git rev-parse --abbrev-ref HEAD)-$(date +%yy%mm%dd)"
  }
}
git checkout -b "good-something-slug"
npm run new:article
# => 'articles/good-something-slug-23y01m12d.md'が作成される

注意点としては

  • branch の名前に slug で許可されていない文字は入れられない("/"など)
  • branch を切ってから記事を作成しないといけない
  • branch の名前は 2 文字以上 40 文字以下にする(slug は 12 文字以上 50 文字以下なため)

などがありますが、後々のメンテナンスさや記事を作る時の気軽さを考えると、いい感じにできたと思います。

Discussion