npm initでauthorやlicenseなどの初期値を指定する

JavaScript Advent Calendar 2015の2日目。小ネタです。

npm initするときにauthorとかlicenseとか毎回同じこと入力するの面倒だったりしません?実はいくつかの項目は初期値を設定できるのだけど、ググってもあまり日本語情報が無いようなので共有。

設定方法は.npmrcで以下のように指定すればOK。

init-author-name=Teppei Sato
init-author-email=teppeis@gmail.com

.npmrcの場所は以下の順で優先される。(詳細は公式を参照)

  1. per-project config file (/path/to/my/project/.npmrc)
  2. per-user config file (~/.npmrc)
  3. global config file ($PREFIX/etc/npmrc)
  4. npm builtin config file (/path/to/npm/npmrc)

今回は全プロジェクトに指定したいケースなので、ホームディレクトリの~/.npmrcに書いておくのが良いと思う。

指定できる設定値は公式docを参照。init-で始まる項目をリストアップしてみる。

init-author-name, init-author-email

名前とメールアドレス。これはたぶんみんな便利になるはず。

init-author-url

自分はURL書いてないので使ってない。

init-license

デフォルトのライセンスはISCなので、自分はMITを初期値に指定してる。

init-version

デフォルトが1.0.0の強気設定なので、0.0.1から始めたい弱気な人はどうぞ。

init-module

これを指定するとnpm initが呼ばれたときにロードするJSファイルを置き換えることができる。よりカスタマイズしたい上級者向け。

完全に置き換わるので、いつもの対話的にパッケージ名等を聞かれる処理はいっさいなくなっちゃうから必要なら自分でゼロから書かなければいけない。実はinit-moduleの初期値は~/.npm-init.jsになっていて、ファイルがあれば発動するようになっているので、init-module自体を設定しなくてもファイルを置けば利用可能。

npm initの実体は npm/init-package-json パッケージで、そのうち default-input.js がデフォルトの対話式スクリプトの実体なので、これをベースに改造するのが良いかも。


以上です。

あとnpm initとは関係ないnpmrcの小ネタとして、tag-version-prefix を変更するとnpm versionで"v1.0.1"になるのを"1.0.1"にできるようになるよ。

Enjoy happy npm life!

npm v2のインストールは`npm i -g npm@latest-2`

タイトルで言い切った感のある小ネタ。

最新のnpm v3は基本素晴らしいのだけど、主にnode_modulesがフラットになったなどのbreaking changesによって一部のパッケージがまだ非対応だったり、自分のプロジェクトで固めたshrinkwrap.jsonからは対応前の古いパッケージを参照していたりすることが稀によくある。

そういうケースではnpm v2系を使い続けたいのだけど、インストール時に

$ npm i -g npm@2

でインストールするとv2系の正式リリース版ではなく、プレリリース版が入ってしまう。

npmプロジェクトではリリースをdist-tagsで管理していて、まずRC版をnextタグとしてプレリリースをして、問題なければ次のリリースでlatestとして正式リリースするプロセスになっている。 v3系がリリースされたので上記のタグはv3系が使ってしまっているが、v2系にもちゃんとタグが付いている。こんな感じ。

  'dist-tags': 
   { latest: '3.5.0',
     next: '3.5.1',
     'latest-2': '2.14.12',
     'v3.x-latest': '3.5.0',
     '3.x-latest': '3.5.0',
     '3.x-next': '3.5.1',
     'v3.x-next': '3.5.1',
     'next-2': '2.14.13',
     'latest-1': '1.4.29' },

npm@2だとnext-2相当がインストールされちゃうので、無駄なリスクを減らしたいプロジェクトではlatest-2をインストールしておくとたぶん無難。

$ npm i -g npm@latest-2

とはいえ、いまさらv2系に大きな変更は入らないと思うのでどっちでもあんまり影響はないと思うけど。

関係ないけど、v3系のdist-tagsはちょっと命名規則が違うんですね。v3.x3.xの両方用意されてたり謎にやさしいし。

Spring Boot 1.2/1.3でhot swapping的なこと

唐突にJavaの話。Spring Bootで変更を動的に反映する場合(いわゆるhot swappingとかhot deploy)はSpring Loadedを使えって出てくるのだけど、なんか動いたり動かなかったりしてなんでなんだろうと小一時間調べたメモ。Spring Boot + Maven + IntelliJ IDEA 15 on Mac 前提。

続きを読む

明日の次世代Webカンファレンスでjs_nextやります

イベントの趣旨はconnpassを見てもらうとして、自分は11:10から js_next というセッションでオーナーをやります。 メンツは@t_wadaさん、@constellationさん、@vvakameさんという盤石の布陣。

このセッションでは、JavaScriptの未来はどうなっていくのか、ブラウザで動くプログラミング言語はどうなっていくのか、というテーマを扱います。

キーワードはこのあたり?

全然このとおりにならない可能性高いですけど。 Reactだとかそっち系は別の front_arch というのセッションで扱うので、こちらではやりません。

500人も集まらないだろうから受付係いらないね、とか言ってたのにフタを開けたら1100人集まっちゃって青ざめてますが、ご興味ある方はぜひどうぞ。

まあ、一番の問題は会場設営で登壇者8:30集合なんだけど、そこに何人集まるかってことなんですけどね。

YAPCで『Effective ES6』について発表してきた

8/21-22に開催されたYAPC::Asia Tokyo 2015"Effective ES6" というタイトルで発表した。

今回、自分にとっては最初で最後のYAPCだったけど、YAPCの面白さは特定分野に留まらないWeb系エンジニアが一堂に会するところだと感じた。

例えばHTTP/2ってWeb全般に影響がある今後キーになる技術要素だと思うけど、HTTP/2単体のイベントにわざわざ参加したり自分で勉強したりする人は限られる。YAPCで様々なレイヤーのエンジニアがHTTP/2のセッションを聞いてそれについて議論することで、日本のWebエンジニアにおけるHTTP/2のベースラインが上がったような気がする。

ベストトーク3本のうち2本がHTTP/2だったのもそういった要因があるのではと感じた(そしてどちらの発表もその期待以上に素晴らしい内容だった!)。

自分の発表も、Web開発に大きく影響するであろうES6というものについて、幅広いエンジニアに知ってもらえたらうれしいと思って準備したのだけど、どうだっただろう。 *1

打ち上げでは、いままで話したことがなかったtagomorisさんやa_matsudaさんと、話題のOSSコミュニティの話、HTTP/2のキャッシュ制御、RailsとDHHの話などエキサイティングなトークで終電を過ぎてしまった。興奮しっぱなしの2日間でした。

YAPCありがとう!

*1:個人的には、英語資料で日本語発表するとしゃべる言葉が頭に浮かびにくく、普段より発表練習の時間がかかるという発表技術的な知見を得た。

Node学園でES6について話した

Node学園 16時限目 ES2015発行記念でES6について話しました。

本編の充実度もさることながら、無法地帯と化した懇親会でFilip Pizloの業績を烈火のごとく語るConstさんと、それに合わせて的確なサイトをブラウザで瞬時に表示し続けるazuさんというコンビ芸が見られて、心底感動しました。

会場と🍣を提供していただいたDeNAさん、ありがとうございました!

引き続き、WEB+DB PRESS Vol.87最新号のES6特集をよろしくおねがいします。 また、YAPCでのES6トークも採択していただきましたので、YAPCまではES6芸人として生きていこうと思います。