npmで自作のCSSを公開したお話
適当に、とりあえず何かをブラウザに表示したい時があると思います。
そんな時、自分で作ったよく使うCSS集的なものをコピーしてきて使っているのだけれど、ちょっとめんどくさい。
npmでインストールできるようにしておけば、少しは楽になるかなということでやってみた。そんなお話。
npmでCSSを公開している例
npmでCSSを公開している例として、有名なのはBootstrapかと思います。
BootstrapのGithubを見ると、package.json
があって、そこでnpmへアップロードしているファイル一覧を選定している見える。
ということで、同じように作ってみる。
package.jsonを作成する
環境構築とかかったるいので今回利用する環境はGoogle Cloud Shellです。
npmがプリインストールされているので、package.json
を作るコマンドを叩いていきます。
npm init
すると以下のように質問されるのでそれぞれ答えていきます。
- パッケージ名
- 任意のパッケージ名(アルファベットは小文字のみ)を入力
- バージョン
- なにも入力していない場合は勝手に
1.0.0
が入ってくれる
- なにも入力していない場合は勝手に
- 詳細説明
- パッケージの説明を入力
- エントリーポイント
- はじめに実行されるファイル。何も入力しなかったら
index.js
が入る。今回はCSSのみのアップロードなのでこの欄は消します。
- はじめに実行されるファイル。何も入力しなかったら
- テストコマンド
- 何も入力しないと、"テストがないよ"の旨を
echo
するコマンドが入るようです。
- 何も入力しないと、"テストがないよ"の旨を
- Gitリポジトリ
- これを入れると、バグ報告用のURLとしてissueページを設定してくれたり、ホームページがリポジトリ直下のReadmeになってくれる。
- キーワード
- ライブラリを説明するいい感じのキーワードを入力する。今回は
CSS
のみで。
- ライブラリを説明するいい感じのキーワードを入力する。今回は
- 作成者名
- 自分の名前。
- ライセンス
- 今回はMITにしておいた。
- この内容で
package.json
を作成して良いですか?-
yes
にして作成する
-
このようにして雛形ができたpackage.json
を修正していきます。
package.jsonの雛形を修正する
今回はCSSを公開してみるので、script関係のものは必要ないので、それらの部分を消していきます。
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
そしてかわりに、CSSをnode_modules
内にインストールしてもらいために、追加するファイル一覧である、files
を追加していきます。
"files": [
"*.css",
"*.svg",
"**/*.css",
"**/*.svg",
],
この際、インストールしてもらうファイルはpackage.json
の位置から辿れるような階層に設置します。今回はこんな感じ。
...
└ <プロジェクトフォルダ>
├ npmインストールしたときにnode_modulesに保存してもらうfiles
├ package.json
└ README.md
これで、package.json
を起点に、package.json
内のfiles
配列とマッチするファイルを配置することができるわけです。
ここでは全ての.css
で終わるファイルと、サブフォルダを含めて(/**/
の部分).css
で終わるファイル(svgも同様に)を対象としています。
そんなこんなで実際に作ってみたpackage.json
はこんな感じ。
かなり小さい構成でできていると思います。
{
"name": "amasugar",
"version": "1.0.5",
"description": "CSSs likes Sweets.",
"files": [
"*.css",
"*.svg",
"**/*.css",
"**/*.svg"
],
"repository": {
"type": "git",
"url": "git+https://github.com/rie-amasato/amaSugar.git"
},
"keywords": [
"CSS"
],
"author": "rie_amasato",
"license": "MIT",
"bugs": {
"url": "https://github.com/rie-amasato/amaSugar/issues"
},
"homepage": "https://github.com/rie-amasato/amaSugar#readme"
}
作ったものをnpmで公開する
さて、作ったものを公開する前に、アップロード用のnpmへのアカウント登録が必要です。
npmのページから、アカウント登録をします。
登録完了したらGCShellのコンソールに戻り、ログインするためのコマンドを実行します。
npm login
わたしの環境ではブラウザが開かなかったので、コンソールに出力されたURLをコピーして、よしなにブラウザに貼り付け、ログインします。ログイン後は404ページに飛ぶけれども、気にせずコンソールに戻ります。
コンソールが操作できるようになるので、package.json
のある位置に移動したのち、npmへのアップロードを行います。
npm publish
これで、npmに自作のCSS集を公開することができました。
次のセクションでは、Nuxt3で使えるように取得していきます。
自作パッケージをNuxt3で使用する
まずはnpmないしyarnでパッケージをインストールしていきます。
npm install <パッケージ名>
yarn add <パッケージ名>
npmで自分のものが入れられる感覚、ちょっとテンション上がっちゃうね。
そのあとは、インストールしたNuxt3プロジェクト内のnuxt.config.ts
内で、インストールしたCSSを読み込む設定を追記。
{
...
css: ["amasugar/amasugar.css"],
}
このときに読み込み設定に記述するファイルの位置はpackage.json
が存在するフォルダからの位置と同じようになるため、その直下に全cssを@import
するCSSを置いておきました。
このCSSが読み込まれて、全部の画面に反映されてくれました。
ここまでで自分が作ったCSS集がnpmを経由していろんなプロジェクトで使えるようになり、管理がちょっと楽になりました。
それはそれとして公開する前に、もうちょっと整理とかしておきたかったなとか思ったところでこの記事はおしまい。(整理してないので大々的に出せない...)
Discussion