Color Adminを購入
現状のRC版hgnはWrapBootstrapというサイトで購入したBootstrapテンプレートを使用しています。
次の正式版でも別のテンプレートを購入して使おうかなと思ってまして、Color Adminというテンプレートを買ってみました。お値段は35ドル、購入時点のレートで4039円でした。
せっかくなので、自分でコンパイルしてみようとしたところ、エラーが出たりしたので解決までの流れを紹介しようと思います。
ちなみに私はNode.jsとかnpmでのパッケージ管理回りについての知識はほとんどありません…
なお、このテンプレートは管理画面でのみ利用しますので、一般ユーザーさんでこれを利用した画面を見ることはないでしょう…
npm installでエラー
Color Adminのドキュメントにある通りにadminのsrcフォルダでnpm installを実行してみました。すると次のようなエラーが出ました。
found 6 vulnerabilities (1 low, 2 moderate, 3 high)
run `npm audit fix` to fix them, or `npm audit` for details
6つ脆弱性があるから、もっと新しいバージョンにしなさいよ!ということでしょうか。詳細は「npm audit」で、とあるので実行してみると、次の3つのパッケージがあかんということでした。
- gulp-sass
- glob-parent
- yargs-parser
自動でやってもらうのが楽なので、「npm audit fix」を実行すると
fixed 0 of 6 vulnerabilities
1個も直せませんでした…
「npm audit fix –force」をやってみるのもいいかもね?みたいな記載があるので、実行してみました。(強制的にバージョンを変えるっぽいので、後で何か影響が出るかもしれませんが…)
fixed 3 of 6 vulnerabilities in 834 scanned packages
3つ直りました。npm auditを見ると”gulp-sass”の表記が無くなったので、このパッケージはもう大丈夫そうです。
残りの2つに関しては、「npm i glob-parent@5.1.2」とかやってみたのですがダメ。package.jsonに記載がないものなので、どれかのパッケージの中で指定されているバージョンがダメなんでしょうね。
色々調べた結果、npm-force-resolutionsというやつで強制的に指定のバージョンにできるということでやってみました。
ますはインストール
npm i -g npm-force-resolutions
で、package.jsonの scripts のところに1つ加えて次のようにしました。
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"preinstall": "npx npm-force-resolutions"
},
もう一つpackage.jsonに新しく resolutions というのを加えました。
"resolutions": {
"glob-parent": "^5.1.2",
"yargs-parser": "^20.2.9"
}
これでnpm installは通りました!けども、warnが1つ出てます。
bootstrap@5.1.0 requires a peer of @popperjs/core@^2.9.3 but none is installed. You must install peer dependencies yourself.
depencenciesのところに “@popperjs/core”: “^2.9.3” を加えて、もう一度npm installしてエラーもワーニングもなく、すっきりインストールできました!
gulp でエラー
続いてgulpでコンパイルです。transparent テーマを使いたいので、これで実行すると…
gulp transparent
こんなエラーが出ました。
gulp-sass 5 does not have a default Sass compiler; please set one yourself.
Both the `sass` and `node-sass` packages are permitted.
For example, in your gulpfile:
var sass = require('gulp-sass')(require('sass'));
書いてある通り、gulpfile.jsを以下のように書き換えました。
var sass = require('gulp-sass');
↑これを↓このように
var sass = require('gulp-sass')(require('sass'));
これでコンパイルして、cssやjsを出力できるようになりました。
あとは不要なものを消したり、欲しいものを追加したりしてやってみようと思います。
GitHubには上げない?
hgnのソースはGitHubで公開しているので、購入したテンプレートをアップするのはダメだと思うんですよね。(再配布になる?)
プライベートリポジトリにすれば大丈夫なのだろうと思いますが、公開しておきたいものなので、ローカルで保存しておくしかないかなぁ。
まぁ、他の人に実装を手伝ってもらうということもないでしょうし…