20210727のNode.jsに関する記事は4件です。

ラズパイZeroWでなでしこ3を動かしたい! あるいは、armv6lのラズパイに最新(v12以上)のnode.jsを入れたい!

やったこと 今さらながら、ラズパイをSSH接続とVNC接続でノートパソコンから操作出来るようにする。 ラズパイZeroWになでしこ3をインストールして、Hello Worldする。 RaspberryPi Zero W (armv6l)に、最新(v12以上)のnode.jsをインストールする。 発端  YouTubeのなでしこ公式チャンネルで、『なでしこ3でラズパイを動かしてみよう!』とゆうことだったので、ノリで買ったはいいけど、Raspbianを入れただけでもう三年がとこ放置している Raspberry Pi Zero WH を引っ張り出す。  ちっちゃ! なでしこ以前の準備  今回やった私の覚え書きです。ムダに長いですスミマセン。読み飛ばして下さい。  SSH接続とVNC接続で、ノートパソコンから操作出来るようにしました。 OS  Raspbianだけは既に入れてある。  どうやらRaspbianからRaspberry Pi OSに名称かわったっぽいけれど。 https://www.raspberrypi.org/software/  とりまアップデート。 sudo apt-get update # パッケージリストの更新 sudo apt-get upgrade # パッケージのアップグレード sudo apt-get dist-upgrade # ディストリビューションの更新  でぃすとりびゅーしょん? とは何ぞ??(ほったらかしすぎたせいで、なかなかな時間が掛かるので、お勉強している) https://wa3.i-3-i.info/word12473.html  Linuxのカーネルとかソフトウェアとか必要なものをひとまとめにしたものってことラシイ。それをOSって言うんじゃないのか。りなっくすさんは難しい;    途中、y/nの入力を求められる場面もあるので、完全放置じゃいけません。  読めもしないけど、すべてyで進めて行きます。 SSH  ケースとminiHDMI変換のついたやつを買っていたからTVに映せるんですけれどね。  前のOSアップグレードも直でマウス差して、Bluetoothのキーボードつないでやったしねw  やっぱり、いちいちNintendo SwitchからHDMIケーブルを引っこ抜かなきゃならないの面倒だから、ノートパソコンでできるようにしたい。  と言ってもTVに映してGUIが使えるから設定変更はカンタンで、[左上のアプリケーションメニュー]→[設定]→[Raspberry Piの設定]→[インターフェイス]でSSHを有効にチェックするだけ!  TeraTermをだうんろーどしてくる。  ホストは、raspberrypi.local  または、ターミナルで ifconfig  wlan0:のinetの価がIPアドレス。    SSHにチェック。SSH versionはSSH2。  次の画面で、 ユーザー名:pi パスワード:raspberry  (実際は、[Raspberry Piの設定]→[システム]でパスワードは変更しておく)  緑と青でラズパイのコマンドプロンプトが表示されたら成功☆ pi@raspberrypi:~ $  できました!  コレで、ノートパソコンからラズパイが操作出来るようになりました。やったね! めも sudo poweroff # 終了 sudo reboot # 再起動 VNC  でも、ワタクシやっぱりGUIがないとダメな人だから。  TVに映ってるとおりを、ノートパソコンに映したい!  RealVNCってものを使えば、出来るそうですよ☆  とゆうわけで、[Raspberry Piの設定]→[インターフェイス]でVNCを有効にチェック。  ラズパイ側のVNCサーバーが起動して、右上に、VNCのアイコンが発生。  ここでパスワードを設定。  おっと、これでifconfigとかしなくても、IPアドレス見れるじゃん。  VNC Viewerをだうんろーどしてくる。  上のバーに、ホスト名raspberrypi.local、またはIPアドレス。  次の画面でパスワード。  映りました! やったね!!  ちなみに、VNCのアプリを入れれば、スマホにも映すことが出来るんですが、スマホの場合はVNC ViewerよりもbVNC Freeのほうがイイ感じでした。  VNC Viewerでは、マウスカーソルを指でずるずる目的の場所まで引っ張っていってからタッチしなければならないとゆう、壊滅的な操作性なんですが、bVNC Freeは、タッチしたとこにマウスカーソルが飛んできてくれるんです☆ やっとなでしこ なでしこ3とは  日本語でプログラム出来るプログラミング言語です。  v1はWindowsだけですが、v3はWebブラウザで動くのでいろんな端末で動きます☆  なでしこ3はブラウザで動きますからね、ラズパイZeroWはWi-Fiが付いてますからね、Chromiumさんで簡易エディタを開けばすぐ出来ますけど、もちろんそうゆうこっちゃ無い。  node.jsが動く端末にはインストールして使うこともできるんですね。web版とは違うnode版の命令が使えたりします。 動画  とりあえず、動画見ましょう。  YouTubeなでしこチャンネル 29回目『なでしこ3でラズパイを動かしてみよう!』 なでしこ3のインストール  動画を見て驚いたのは、えっ、なでしこ3のインストール、超簡単になってないですか?!?!    実は買った当時も1度、なでしこ3を入れてみたことはみたんです。  「なでしこ3を動かすにはNode.jsが必要」とゆうわけで、まずはNode.jsをインストールする必要があって、さらにNode.jsを最新版にアップデートと、慣れてる人にはどってこと無いのでしょうが、コマンド多くてなかなかめんどーでした。  しかも、アップデート中に謎のWARNが出まくり、結構な時間を掛けてようやく終わっても、やっぱりうまく行ってなくてなでしこ3が入れられなかったりと、単に私が慣れてなくて無能だったせいだと思いますが、とにかく相当な艱難辛苦だった記憶があります。(TVに映して違うキーボードだったから、若干操作も不自由でしたね。SSH接続大事!www)  ともかく結局ナニが悪くて躓いたのかも、最終的にどうやって出来たのかも分からず・・・でしたorz    ・・・が! なんと!!  Raspberry Piでなでしこ3を動かそう  簡単インストールコマンド、たったの一行!!!  必要のコマンドが全部順番に実行されるようになっているんですね。  とゆうわけで、もちろんアップデートも出来るだろうけど、一回Node.jsもなでしこ3もアンインストールして、何事も無かったかのように1からやってみます。 curl https://raw.githubusercontent.com/kujirahand/nadesiko3/master/installer/chromeos.sh | /bin/bash  こんだけ! コピーするボタンもあるとゆう親切設計☆  なかなかな時間がかかるので、なんかしながら地道に待ちます。 npm WARN notsup Unsupported engine for fs-extra@10.0.0: wanted: {"node":">=12"} (current: {"node":"10.24.1","npm":"6.14.12"}) npm WARN notsup Not compatible with your version of node/npm: fs-extra@10.0.0 + nadesiko3@3.2.24 added 109 packages from 67 contributors in 122.013s  入りました!  バージョンは3.2.24。(2021/7/27現在)  ・・・が、またまた今回もエラーが出ていますよヽ(;´Д`)ノ  前回の、びっちりWARNだらけになった時とは違うけど、どうもさくっと終わらないにゃぁ(´Д⊂ヽ  どうやら、nodeのバージョンがサポート外だと、12以上入れろと言ってるラシイ・・・  でも、とりあえず、なでしこさんは一応動きました☆ cnako3 -e 「こんにちは世界」と表示。 →こんにちは世界 cnako3 -e ナデシコバージョンを表示。 →3.2.24  できた! 新しいnode.jsを入れたい node.jsのバージョン・・・  わりと最近、なでしこ3のnode.jsの対応バージョンがv12以上に変更されたっぽいのですよね。 https://github.com/kujirahand/nadesiko3/issues/1039  ところが! n lsr  をしてみると・・・ 11.15.0 11.14.0 (中略) 11.1.0 11.0.0 10.24.1 10.24.0 10.23.3  一番新しいのは11.15.0だって!  (インストールされたのは偶数番の最新10.24.1)  いろいろケンサクすると、ラズパイZeroWはarmv6lで、armv6lはnode.js v12から、サポート外となってしまったらしい。ひ、ひどい(´Д⊂ヽ https://scrapbox.io/yuta0801/Node.js_v12%E3%81%8B%E3%82%89armv6l%E3%81%AE%E5%85%AC%E5%BC%8F%E3%83%93%E3%83%AB%E3%83%89%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84  でも、非公式ビルドがあるとゆうことが分かりました。 https://unofficial-builds.nodejs.org/download/release/  最新は、v16.5.0(2021/7/27現在)みたい。 インストールする  なでしこ3、動くっちゃあ動くから、いいっちゃあいいんだけど、なんか悔しいし折角だから入れてみたい!  入れ方はここに書いてある。 https://github.com/nodejs/help/wiki/Installation  英語だけど負けません! ぐーぐる翻訳さん助けて(>_<)/  ・・・こんな感じ? #環境変数 VERSION=v16.5.0 DISTRO=linux-armv6l #だうんろーど sudo wget https://unofficial-builds.nodejs.org/download/release/$VERSION/node-$VERSION-$DISTRO.tar.xz #いんすとーる先 sudo mkdir -p /usr/local/lib/nodejs #いんすとーる sudo tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs  そして、さらに、.profileファイルを編集しなきゃならないラシイ。  えっ、viなんてしりませんよ。ファイルマネージャーから/home/pi/.profileを探してテキストエディタで開いたよw VNCがだいかつやくだね!www  最後にコレを追加。 #node.js VERSION=v16.5.0 DISTRO=linux-armv6l export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH  編集して保存したら、profileを更新。。 . ~/.profile  テスト。 node -v →16.5.0 npm version →{ npm: '7.19.1', node: '16.5.0', v8: '9.1.269.38-node.20', uv: '1.41.0', zlib: '1.2.11', brotli: '1.0.9', ares: '1.17.1', modules: '93', nghttp2: '1.42.0', napi: '8', llhttp: '6.0.2', openssl: '1.1.1k+quic', cldr: '39.0', icu: '69.1', tz: '2021a', unicode: '13.0', ngtcp2: '0.1.0-DEV', nghttp3: '0.1.0-DEV' } npx -v →7.19.1  できました! やったね☆  なでしこさんも、無事動きました。よきーよきー♪ おわります  結局今回も、node.jsに振り回され、簡単にはいきませんでした。  node.jsツラい(´Д⊂ヽ  でも、おそらく新しいラズパイではこんなことも無く、一行でカンタンにインストールが完了するハズ!  折角頑張ったから、もう少し何か遊んでみたい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacBookのファンの回転数をCLIから簡単に操作出来るnpmを公開した

概要 重い作業をしているときに MacBook のファン回転数を最大にしたいと思うことが多々あり、今までは Macs Fan Control を利用していたが、ファン回転数を操作するためにわざわざアプリを起動し、GUIで操作することが極めて面倒だと感じていた。 そこで、MacBook のファンの回転数をコマンドから変更出来る CLI ツールが無いか調べてみたところ、smcFanControl というツールを見つけた。 Macのファンをコマンドで操作する。 – p_06c hholtmann/smcFanControl | GitHub 記事を見れば分かるが、smcFanControl を CLI で利用するのは下記の理由によりめちゃくちゃ面倒くさい。 ファンを1つずつしか操作出来ない ファンモードの変更が2進数 ファンIDの指定を文字列の途中に差し込む必要がある ファンの回転速度を10進数→2進数→左2ビットシフト→16進数にした数字を指定 ここまで来ると人間が使うために作られていないのでは?と思う。使いづらいなら自作してしまおうと重い、OSX の API 経由でファンの回転速度を変更出来ないか調べたが、どうやら出来ないようだった。 Macbook Pro system fan speed control via API 仕方がないので、今回はファンの操作が出来る smcFanControl のラッパーを node.js で書くことにした。完成品は npm パッケージとして公開しているが、どのバージョンで動作するか等が全く不明なので自己責任でお願いできればと思う。 GitHub: https://github.com/yakimelon/EasyMacFanController npm: https://www.npmjs.com/package/ezf 使い方 最初に smcFanControl をインストールする必要がある。その後、npm で ezf をインストールする。 $ brew install smcfancontrol --cask $ npm install -g ezf ezf -h で表示したヘルプが下記の通り。 Options: -h, --help display help for command -s, --status Check mac fan status -a, --auto Change mac fan all auto mode -r, --rotate [speed] Change mac fan rotate ファンの回転速度を変更する ファンの情報を表示して、現在のモードと最高/最低回転速度を確認。 その後、最高速度以下かつ最低速度以上の回転速度を指定。 $ ezf --status $ ezf --rotate [回転速度] ファンの回転を自動制御に戻す $ ezf --auto 実装方法 短いのでコードをベタ貼りしておく、エラートラッキング等は一切していない。 コマンドライン引数のパースは簡単に済ませたかったので minimist を利用している。 ファンの回転速度変更手順は下記の通り。 ファンの情報を表示して、現在のモードと最高/最低回転速度を確認 全てのファンを手動制御モード (force) に変更する 全てのファンの回転速度を変更する #! /usr/bin/env node const argv = require("minimist")(process.argv.slice(2)); const { execSync } = require('child_process'); // smcFanControl のコマンドは長いので、オプションを受け取る形で関数として切り分けた function smc(options) { return execSync('sudo /Applications/smcFanControl.app/Contents/Resources/smc ' + options); } // show help if (argv.help || argv.h) { console.log("" + "Options:\n" + " -h, --help display help for command\n" + " -s, --status Check mac fan status\n" + " -a, --auto Change mac fan all auto mode\n" + " -r, --rotate [speed] Change mac fan rotate" ); return; } // ファンの情報(回転数など)を標準出力するコマンド if (argv.status !== undefined || argv.s !== undefined) { const stdout = execSync('/Applications/smcFanControl.app/Contents/Resources/smc -f'); console.log(stdout.toString()); return; } // 全てのファンを自動制御モードに切り替えるコマンド if (argv.auto !== undefined || argv.a !== undefined) { smc('-k "FS! " -w 0000'); console.log("changed mac fan all auto mode."); return; } // 全てのファンの回転速度を指定した速度に変更するコマンド if (argv.rotate !== undefined || argv.r !== undefined) { // ファンの個数を自動で取得後、全てのファンを手動制御モードに切り替える const fanCount = smc('-f').toString().split('\n')[0].slice(-1); const target = ((2 ** fanCount) - 1).toString(16); smc('-k "FS! " -w 000' + target); // 全てのファンのスピードを指定した速度に変更 const speed = argv.r || argv.rotate; for (let i = 0; i < fanCount; i++) { smc('-k F' + i + 'Tg -w ' + speed); } console.log("changed mac fan rotation speed."); return; } console.log('Command not found. Please enter "ezf -h".'); 1行目にある #! /usr/bin/env node は npm install -g での公開を前提とする場合は必須になる、詳細はこちらの Stackoverflow を参照。 npmパッケージとして公開する npm パッケージを公開した経験は無いので、良い経験だと思ってせっかくなので公開した。公開自体は難しくなかったので、各種情報をこちらで共有できればと思う。基本的な npm パッケージの公開方法は下記の記事を参照すると良いかと思われる。 3分でできるnpmモジュール - Qiita 初めてのnpm パッケージ公開 - Qiita npmに自作のCLIモジュールを公開する - memorandum 簡易的な手順 簡単にまとめると下記の通り。 https://npmjs.org/signup から npm 開発者登録 (メール認証をしておく) <- 一瞬で終わる npm adduser でアカウント紐付け package.json を用意して本体を実装 (スクリプトは bin/ 以下に配置した) npm publish でアップロード アップロード時に README.md が含まれているとページの見栄えが良くなるのと、package.json に repository 情報を書いておくと自動で表示してくれる。また、npm パッケージに変更を加えて更新したい場合は package.json の version を変更して再び npm publish するだけで良い。(バージョンアップはコマンドから出来るっぽい?詳しく調べなかったので不明) ディレクトリ構成 . ├── .git ├── .gitignore ├── LICENCE ├── README.md ├── bin │ └── ezf.js ├── node_modules │ ├── .package-lock.json │ └── minimist ├── package-lock.json └── package.json package.json の中身 今回自分が書いた package.json の中身は下記の通り。基本的には npm init で作られたものだが、追加で下記の変更を加えている。 preferGlobal の追記 (npm install -g を許可する) main の削除 (require される部類のパッケージでは無いため不要) bin の追加 (ここに実行されるファイルのパスを記述する) { "name": "ezf", "version": "0.0.6", "description": "Easy Mac Fan Control.", "bin": { "ezf": "bin/ezf.js" }, "preferGlobal": true, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/yakimelon/EasyMacFanController" }, "author": "yakimelon@ice_arr", "license": "MIT", "dependencies": { "minimist": "^1.2.5" } } 成果物 npmのページ はこのような形になった。 また、最終的に出来上がったコマンドがこちら。 まとめ 個人的に便利なものを作れた満足さと、今までやってこなかった「npmパッケージの公開」を実践できてとても満足した。npm install -g で npm パッケージを公開することに関しての日本語記事はあまりなく、少し戸惑ったので誰かの役に立てばと思う。 もし間違いや理解が足りていない部分がありましたら、コメントにてご指摘いただけますと幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacBookのファンの回転数をCLIから簡単に操作出来るnpmパッケージを実装して公開した

概要 重い作業をしているときに MacBook のファン回転数を最大にしたいと思うことが多々あり、今までは Macs Fan Control を利用していたが、ファン回転数を操作するためにわざわざアプリを起動し、GUIで操作することが極めて面倒だと感じていた。 そこで、MacBook のファンの回転数をコマンドから変更出来る CLI ツールが無いか調べてみたところ、smcFanControl というツールを見つけた。 Macのファンをコマンドで操作する。 – p_06c hholtmann/smcFanControl | GitHub 記事を見れば分かるが、smcFanControl を CLI で利用するのは下記の理由によりめちゃくちゃ面倒くさい。 ファンを1つずつしか操作出来ない ファンモードの変更が2進数 ファンIDの指定を文字列の途中に差し込む必要がある ファンの回転速度を10進数→2進数→左2ビットシフト→16進数にした数字を指定 ここまで来ると人間が使うために作られていないのでは?と思う。使いづらいなら自作してしまおうと重い、OSX の API 経由でファンの回転速度を変更出来ないか調べたが、どうやら出来ないようだった。 Macbook Pro system fan speed control via API 仕方がないので、今回はファンの操作が出来る smcFanControl のラッパーを node.js で書くことにした。完成品は npm パッケージとして公開しているが、どのバージョンで動作するか等が全く不明なので自己責任でお願いできればと思う。 GitHub: https://github.com/yakimelon/EasyMacFanController npm: https://www.npmjs.com/package/ezf ※ 2021/07/29 アップデート 全てのファンを最大速度で回転させるオプションを追加 回転速度の計算が間違っていたので修正 使い方 最初に smcFanControl をインストールする必要がある。その後、npm で ezf をインストールする。 $ brew install smcfancontrol --cask $ npm install -g ezf ezf -h で表示したヘルプが下記の通り。 Options: -h, --help display help for command -s, --status Check mac fan status -a, --auto Change mac fan all auto mode -m, --max Maximize all fans speed -r, --rotate [speed] Change mac fan rotate ファンの回転速度を変更する ファンの情報を表示して、現在のモードと最高/最低回転速度を確認。 その後、最高速度以下かつ最低速度以上の回転速度を指定。 $ ezf --status $ ezf --rotate [回転速度] 全てのファンの回転速度を最大にする 全てのファンをそれぞれの最大速度で回転させる。 $ ezf --max 全てのファンの回転を自動制御に戻す $ ezf --auto 実装方法 短いのでコードをベタ貼りしておく、エラートラッキング等は一切していない。 コマンドライン引数のパースは簡単に済ませたかったので minimist を利用している。 #! /usr/bin/env node const argv = require("minimist")(process.argv.slice(2)); const { execSync } = require('child_process'); // smcFanControl のコマンドは長いので、オプションを受け取る形で関数として切り分けた function smc(options) { return execSync('sudo /Applications/smcFanControl.app/Contents/Resources/smc ' + options); } // ファンの個数を取得する function getFanCount() { return smc('-f').toString().split('\n')[0].slice(-1); } // 全てのファンを手動制御モードに変更する function changeAllFansForceMode(fanCount) { const target = ((2 ** fanCount) - 1).toString(16); smc('-k "FS! " -w 000' + target); } // ファンのスピードを変更する function changeFanRotationSpeed(fanNumber, speed) { smc('-k F' + fanNumber + 'Tg -w ' + fanSpeedMapper(speed)); } // 10進数のファンスピードをsmcが理解出来る形式に変換する // 10進数→2進数→2ビット左シフト→16進数変換 function fanSpeedMapper(speed) { return (speed << 2).toString(16); } // show help if (argv.help || argv.h) { console.log("" + "Options:\n" + " -h, --help display help for command\n" + " -s, --status Check mac fan status\n" + " -a, --auto Change mac fan all auto mode\n" + " -m, --max Maximize all fans speed\n" + " -r, --rotate [speed] Change mac fan rotate" ); return; } // ファンの情報(回転数など)を標準出力するコマンド if (argv.status !== undefined || argv.s !== undefined) { const stdout = execSync('/Applications/smcFanControl.app/Contents/Resources/smc -f'); console.log(stdout.toString()); return; } // 全てのファンを自動制御モードに切り替えるコマンド if (argv.auto !== undefined || argv.a !== undefined) { smc('-k "FS! " -w 0000'); console.log("changed mac fan all auto mode."); return; } // 全てのファンを最大速度で回転させるコマンド if (argv.max !== undefined || argv.m !== undefined) { // ファンの個数を自動で取得後、全てのファンを手動制御モードに切り替える const fanCount = getFanCount(); changeAllFansForceMode(fanCount); // 各ファンの最大スピードを smc -f の結果から取得して配列にする // 例) [fan#0 speed, fan#1 speed...] const maximumSpeeds = smc('-f') .toString() .split('\n') .filter(x => x.indexOf('Maximum') !== -1) .map(x => x.split(':')[1] .slice(1)); // 全てのファンを最大スピードに変更する for (let i = 0; i < fanCount; i++) changeFanRotationSpeed(i, maximumSpeeds[i]); console.log("Maximize all fans speed."); return; } // 全てのファンの回転速度を指定した速度に変更するコマンド if (argv.rotate !== undefined || argv.r !== undefined) { // ファンの個数を自動で取得後、全てのファンを手動制御モードに切り替える const fanCount = getFanCount(); changeAllFansForceMode(fanCount); // 全てのファンのスピードを指定した速度に変更 const speed = argv.r || argv.rotate; for (let i = 0; i < fanCount; i++) changeFanRotationSpeed(i, speed); console.log("changed mac fan rotation speed."); return; } console.log('Command not found. Please enter "ezf -h".'); 1行目にある #! /usr/bin/env node は npm install -g での公開を前提とする場合は必須になる、詳細はこちらの Stackoverflow を参照。 npmパッケージとして公開する npm パッケージを公開した経験は無いので、良い経験だと思ってせっかくなので公開した。公開自体は難しくなかったので、各種情報をこちらで共有できればと思う。基本的な npm パッケージの公開方法は下記の記事を参照すると良いかと思われる。 3分でできるnpmモジュール - Qiita 初めてのnpm パッケージ公開 - Qiita npmに自作のCLIモジュールを公開する - memorandum 簡易的な手順 簡単にまとめると下記の通り。 https://npmjs.org/signup から npm 開発者登録 (メール認証をしておく) <- 一瞬で終わる npm adduser でアカウント紐付け package.json を用意して本体を実装 (スクリプトは bin/ 以下に配置した) npm publish でアップロード アップロード時に README.md が含まれているとページの見栄えが良くなるのと、package.json に repository 情報を書いておくと自動で表示してくれる。また、npm パッケージに変更を加えて更新したい場合は package.json の version を変更して再び npm publish するだけで良い。(バージョンアップはコマンドから出来るっぽい?詳しく調べなかったので不明) ディレクトリ構成 . ├── .git ├── .gitignore ├── LICENCE ├── README.md ├── bin │ └── ezf.js ├── node_modules │ ├── .package-lock.json │ └── minimist ├── package-lock.json └── package.json package.json の中身 今回自分が書いた package.json の中身は下記の通り。基本的には npm init で作られたものだが、追加で下記の変更を加えている。 preferGlobal の追記 (npm install -g を許可する) main の削除 (require される部類のパッケージでは無いため不要) bin の追加 (ここに実行されるファイルのパスを記述する) { "name": "ezf", "version": "0.0.6", "description": "Easy Mac Fan Control.", "bin": { "ezf": "bin/ezf.js" }, "preferGlobal": true, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/yakimelon/EasyMacFanController" }, "author": "yakimelon@ice_arr", "license": "MIT", "dependencies": { "minimist": "^1.2.5" } } 成果物 npmのページ はこのような形になった。 また、最終的に出来上がったコマンドがこちら。 まとめ 個人的に便利なものを作れた満足さと、今までやってこなかった「npmパッケージの公開」を実践できてとても満足した。npm install -g で npm パッケージを公開することに関しての日本語記事はあまりなく、少し戸惑ったので誰かの役に立てばと思う。 もし間違いや理解が足りていない部分がありましたら、コメントにてご指摘いただけますと幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

パッケージマネージャー、モジュールバンドラー、トランスパイラ復習

パッケージマネージャー ・ファイル同士の依存関係を自動的に解決してくれる。 ・import先が明示的にわかる import { hoge } from './fuga' ・世界中で公開されているパッケージをコマンド一つで利用可能にする。 代表的なものとしてnpm,yarnなどがある。 それまで単一のファイルに処理が書かれていたjavascriptが「これ複数のファイルに分けた方が見やすくていいよね」みたいな考え方から、ファイルを分割して、それを<script>タグで読み込むみたいな形がとられていた。 でもこれだと、どのファイルからどんなものが読み込まれているのかが視覚的にわかりにくかった。 そこで生まれたのがパッケージマネージャー。 どのファイルから何を読み込んでいるのかが明示的にわかるようになったり、世界中の開発者が公開している便利なパッケージをコマンド一つでインストールできるようにしたりした。 npmのレジストリからパッケージをインストールして、その実態はnode_modulesというファイルに格納されている。 どのようなパッケージをどのようにインストールしたのかはpackage.jsonやpackage.lock.jsonファイルに記述されている。 モジュールバンドラー 複数のjavascriptファイルを一つにまとめるためのもの。 代表的なものとしてwebpackがある。 パッケージマネージャーによって分割されたモジュールやパッケージは本番環境で実行する際、一つにまとまっていた方がパフォーマンスが良さそうだよねという考えから、本番用にビルドする際はそれらを一つにまとめるようにした。 その際に使用するのがモジュールバンドラー。ファイル同士の依存関係等も考慮した上でファイルをバンドルしてくれる。 トランスパイラ 新しいjavascriptの記法を古い記法に変換してくれるもの。 代表的なものとしてbabelがある。 javascriptのバージョンES6で、さまざまな便利な記法が追加されたが、その記法に対応していないブラウザがいくつかあった。でもそのためにES6で書くのを諦めてES2015などで記述するのはあまり効率が良くないと考えられたため、ファイルを実行するときに新しい記法を古い記法に変換してくれるツールが開発された。 それがトランスパイラ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む