自作ストレージサーバー用のためのCLIツールをNode.jsで作成した話
こんにちは。のんです。
今回はCLIツールを自作してみた話をしようと思います。
前にストレージサーバーを作成したけど...
以前に自作のストレージサーバー作成した話をしました。
このストレージサーバーのAPIは画像データをBase64で送信する仕組みです。
このブログのようにサービスからAPIをコールするタイプなら面倒ではないのですが、Postmanなどを利用してちょっとした画像をアップロードするときに、いちいちBase64エンコードするツールWEBサイトを開くのは面倒でした。
そこで、画像をBase64エンコードするツールを作成しようと思いたったという経緯です。
@nonz250/image-base64
こちらが作成したツールです。
CLIツールのために利用したパッケージ
詳細はコードを見ていただければわかりますが、そもそも自分で何か特別なロジックを書いているわけではありません。便利なライブラリを導入してそれを組み合わせただけのコードです。
一応少しだけ紹介をしておこうと思います。
base64-js
バイナリデータをBase64形式に変換してくれるライブラリです。
cac
JavaScriptでCLIの基本機能を提供してくれるライブラリです。
chalk
コンソールにメッセージを表示するときに、色付けを行ってくれるライブラリです。
clipboardy
環境に関わらず、クリップボードの操作を行ってくれるライブラリです。
実装内容
エラーハンドリングは行っていないので、雑な作りですが...
#! /usr/bin/env node
import base64js from 'base64-js'
import cac from 'cac'
import chalk from 'chalk'
import clipboardy from 'clipboardy'
import fs from 'fs'
const cli = cac();
cli
.command('encode <path>', 'Convert images to base64 strings.')
.action((path) => {
const image = fs.readFileSync(path)
const base64strings = base64js.fromByteArray(image)
clipboardy.write(base64strings).then(() => {
console.log(chalk.green('✅ Successfully. Copied to clipboard.'))
}).catch(() => {
console.error(chalk.red('⚠️ Failed. Please check your input.'))
})
})
cli.help()
cli.parse()
command
メソッドでCLIで実行するコマンドの名前を決めます。ここでは encode <path>
で引数に画像までのパスを指定する作りになっています。
次に、action
メソッドの処理が実際にコマンドを実行するときの処理になります。
const image = fs.readFileSync(path)
で、画像の読み込みをします。
const base64strings = base64js.fromByteArray(image)
で、読み込んだ内容をBase64エンコードします。
clipboardy.write(base64strings).then(() => {
console.log(chalk.green('✅ Successfully. Copied to clipboard.'))
}).catch(() => {
console.error(chalk.red('⚠️ Failed. Please check your input.'))
})
で、Base64文字列をクリップボードに貼り付けます。
CLIのコマンドをpackage.jsonに登録
下記のように、 package.json
にコマンド名を登録しておくことで
"bin": {
"image-base64": "index.js"
}
npm i @nonz250/image-base64
したときに bin
ディレクトリにシンボリックリンクを貼ってくれます。
つまり、インストールしたときに
image-base64 --help
のように利用できるようになるということです。
Node Package として公開
npm publish
普通に公開するだけです。
ちょっと間違えて 1.0.0
を unpublish
してしまったので 1.0.1
から始まっていますw
初めて使う人は
npm adduser
をしたり、
npm login
をして、ユーザー情報をコマンドに紐付けておきます。
作成したCLIツールの使い方
これも README.md
に書いてありますが、
- Install package.
npm i --location=global @nonz250/image-base64
Restart terminal.
image-base64 --help image-base64 encode <path> image-base64 encode ~/foo/bar.png image-base64 encode ./baz.png
- Npx command.
npx @nonz250/image-base64 --help npx @nonz250/image-base64 encode <path> npx @nonz250/image-base64 encode ~/foo/bar.png npx @nonz250/image-base64 encode ./baz.png
です。
最後に
今回は自作のストレージサーバーのための、自作CLIツールを作成してみました。
画像をBase64を変換する機能はあまり需要が無いかもしれませんが、公開もしていますのでよろしければ使ってみてください。
バイクの記事が書けてないので、今度こそ...今度こそ書きたいと思いますw
そのときはよしなに。
.