たまたま Yarn の記事を読みまして、気になったので使ってみました。
環境
- npm 5.8.0
- Yarn v1.5.1
Yarn?
Yarnはコードのためのパッケージマネージャーです。 これにより、世界中の開発者とコードの使用と共有を可能にしてくれます。 Yarnはこれを迅速且つ安全に、そして確実に行ってくれるため、心配することは何もありません。
パッケージマネージャーだそうです。
YarnはFacebook、Google、Exponent、Tildeによって開発された新しいJavaScriptパッケージマネージャーです。公式発表に記載されているように、Yarn開発者が直面したnpmの問題解決を目的としています。
- インストールパッケージの速度および一貫性が不十分である
- npmではパッケージがインストール時にコードを実行することを許可しているため、セキュリティー上の問題がある
npm の問題を解決することを目的としているようです。
インストール
WSL の Ubuntu にインストールしたかったので、 Linux の記載を探しました。
macOS の場合は Homebrew 、 Windows の場合は Windows Installer か Windows 用のパッケージマネージャである Chocolatey でインストールできるようです。
Debian/Ubuntu Linux
Debian もしくは Ubuntu Linux の場合は、私たちが用意した Debian パッケージリポジトリ経由で Yarn をインストールできます。まず最初にリポジトリの設定をする必要があります。
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Ubuntu 16.04 以下や Debian の安定版では、 Node.js の十分な新しいバージョンを取得するために NodeSource のリポジトリを構成する必要があります。
…略…
その後はシンプルに以下を実行するだけです。
sudo apt-get update && sudo apt-get install yarn
リポジトリの設定をする必要があるようです。 こういうの、ちょっと面倒だと思ってしまいます。
install
npm i yarn
npm からでもインストールできるようです。 npm も npm のパッケージとしてグローバルにインストールしてあるし、 Yarn も npm のパッケージとしてグローバルにインストールしてみようと思います。
次のコマンドでインストールしました。
$ sudo npm i yarn -g
[sudo] password for user:
/usr/local/bin/yarnpkg -> /usr/local/lib/node_modules/yarn/bin/yarn.js
/usr/local/bin/yarn -> /usr/local/lib/node_modules/yarn/bin/yarn.js
+ yarn@1.5.1
added 1 package in 1.269s
インストールできたみたいです。
$ npm ls yarn -g
/usr/local/lib
└── yarn@1.5.1
グローバルに Yarn がありました。
使い方
プロジェクトの新規作成
プロジェクトの新規作成
yarn init
npm と同じで、 init
コマンドでプロジェクトの新規作成ができるみたいです。
$ yarn init
yarn init v1.5.1
question name (project):
question version (1.0.0):
question description:
question entry point (index.js):
question repository url:
question author:
question license (MIT):
question private:
success Saved package.json
Done in 11.94s.
package.json ファイルができました。
{
"name": "project",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
デフォルトの値は省略されてしまうのでしょうか。 npm で作成したものよりシンプルでした。
依存関係の追加
依存関係の追加
yarn add [package] yarn add [package]@[version] yarn add [package]@[tag]
add
コマンドで追加できるようです。
cowsay - npm を追加してみます。
$ yarn add cowsay
yarn add v1.5.1
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 9 new dependencies.
info Direct dependencies
└─ cowsay@1.3.0
info All dependencies
├─ ansi-regex@3.0.0
├─ cowsay@1.3.0
├─ get-stdin@5.0.1
├─ is-fullwidth-code-point@2.0.0
├─ optimist@0.6.1
├─ string-width@2.1.1
├─ strip-ansi@4.0.0
├─ strip-eof@1.0.0
└─ wordwrap@0.0.3
Done in 7.26s.
追加できたようです。 小さいパッケージだからかもしれませんが、速いような気がします。
ローカルにインストールされた CLI
ローカルにインストールされた CLI
yarn <command> [<args>] を実行すると、ローカルにインストールされた CLI と一致するコマンドが実行されます。そのため、簡単なユースケースではユーザー定義スクリプトを自分でセットアップする必要はありません。
Yarn でもこれが使いたかったです。
cowsay を yarn <command> [<args>]
で実行してみます。
$ yarn cowsay JavaScript FTW!
yarn run v1.5.1
$ /path/to/project/node_modules/.bin/cowsay JavaScript FTW!
_________________
< JavaScript FTW! >
-----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Done in 1.04s.
node_modules/.bin の cowsay が実行されているようです。
依存関係の削除
一応、削除も引用しておきます。
依存関係の削除
yarn remove [package]
remove
コマンドでパッケージを削除できるようです。
終わり
今後の展開
もしかすると、読者のみなさんはNode.jsとio.jsにまつわる経緯を知っているかもしれません。かいつまんで説明すると、ガバナンスに関する意見の不一致からNode.jsから分岐したio.jsは、一部の献身的な人たちによって開発されました。io.jsはオープンガバナンスを採用しました。しかし、1年もたたないうちに、Node.jsとio.jsのチームは合意に達し、io.jsは再びNode.jsに合併され廃止されました。それが正しいかどうかは別として、多くのすぐれた機能がio.jsからNode.jsに導入されました。
積極的に Yarn を使うこともないかな、と思いました。