Skip to content

Instantly share code, notes, and snippets.

@dynamis
Created April 26, 2019 05:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dynamis/1137e4ad3a1d7b621374af3d264a821a to your computer and use it in GitHub Desktop.
Save dynamis/1137e4ad3a1d7b621374af3d264a821a to your computer and use it in GitHub Desktop.
VuePress で .html 無しでビルドした後で .html を付与するやっつけスクリプト
var fs = require("fs");
var glob = require("glob");
var path = require("path");
/*
* 以下のすべてに該当するファイルに .html 拡張子を付与する
* - ディレクトリではない
* - assets や images ディレクトリ内のファイルではない
* - ファイル名が _ で始まらない
* - ファイル名に . を含まない (拡張子がない)
* 本当は renamer あたりで一撃でやるのを package.json に書きたかったが
* 再帰かつディレクトリを除外する形で指定する方法が見つからなかったのでこんな感じ
*/
glob(
"docs/.vuepress/dist/**",
{ nodir: true, ignore: "docs/.vuepress/dist/@(assets|images)/**" },
(err, files) => {
files.forEach(filename => {
if (/^[^._][^.]*$/.test(path.basename(filename))) {
fs.renameSync(filename, filename + ".html");
}
});
}
);
@dynamis
Copy link
Author

dynamis commented Apr 26, 2019

vuepress デフォルトが /pagename.html など .html 付きしか対応できない問題
vuejs/vuepress#1060
が修正されず、プラグイン
https://www.npmjs.com/package/vuepress-plugin-clean-urls
で /pagename としてアクセスできるようにしたらビルド結果のファイルが拡張子無しになり netlify で text/plain で配信されて泣ける結果になったために書いたスクリプトです

netlify で pretty url を有効にしてホストするといったケースにどうぞ。除外パスは適当に書き換えて使ってね。はぁと。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment