Advertisement

ビルド職人の朝は早い

Apr. 23, 2016
Advertisement

More Related Content

Viewers also liked(20)

Advertisement
Advertisement

ビルド職人の朝は早い

  1. ビルド職人の朝は早い Matsui Masashi niigata.js #1
  2. • 松井 正志 (Matsui Masashi) • twitter: @circled9, @ma_2_i • 仕事は8割方JavaScriptを書いてます 自己紹介 2
  3. みなさんJSで 消耗してませんか? 3
  4. 激流のような トレンドの移り変わり 4
  5. 矢継ぎ早に襲いかかる バージョンアップ 5
  6. 特にビルド 6
  7. 各ツールの依存関係で 動かなくなってつらい 7
  8. Babelを5から6にしたら あれこれ動かなくなったとか 8
  9. 登場人物の紹介 9
  10. node.js • サーバーサイドJavaScriptの実行環境 • ブラウザで動作するJavaScriptを開発する時もビル ドツールの動作環境としてよく使われる 10
  11. npm • node.jsのモジュールを管理するツール • Node Package Manager • node.jsに標準でついてくる 11
  12. タスクランナー • ビルドやテストなどのタスクを定義し、実行するツ ール • grunt、gulp、flyなどのツールが有る • 具体的な処理は、それぞれプラグインを使って処理 をする 12
  13. モジュール管理 • モジュールの依存関係を解決する • 主にブラウザ上で動作するJavaScript対象 • browserify、webpack、rollupなど • このカテゴリーのツールもプラグインがたくさんあ る 13
  14. ビルド職人の朝は早い 14
  15. ビルド職人の朝は早い • 今日は僕の現時点でのJavaScriptのビルドに関する 知見を話したいと思います • 来年くらいには言っていること変わっているかもし れません • 内容に異論は認める 15
  16. 目次 • npm install -gはやめよう • run-script経由で呼びだそう • preとpostを使おう • 依存は減らそう 16
  17. npm install -g はやめよう 17
  18. これ 18
  19. npm install --global gulp-cli or npm install -g gulp-cli 19
  20. npm install -g • -g オプションをつけるとグローバルインストール される • パスが通った場所にインストールされ、どこでもそ のコマンドが呼べる 20
  21. 悲しい例 今年のワイ「よっしゃwebpack使おう」 npm install -g webpack (1年後…) 来年のワイ「よっしゃ時代はwebpack2や」 npm update -g webpack 上司「去年のプロジェクトに機能追加してくれ」 来年のワイ「・・・」 21
  22. -g のデメリット • グローバルにインストールするので、プロジェクト ごとにバージョンが変えられない • nodebrewなどでnodeのバージョンを切り替えると 、再度インストールし直しになる 22
  23. 代案 • インストールするときは -D (--save-dev) オプショ ンを使う • 使うときは run script(後述)経由で呼び出す 23
  24. run-scriptを使おう 24
  25. Example • Bad!! $ npm install gulp -g $ npm install $ gulp • Good!! $ npm install $ npm start 25
  26. run-script • package.jsonのscripts内に書いたタスクをnpm run XXXで呼び出すことができる • このときnode_modules/.binにはパスが通っている 26
  27. メリット • 何を使っているのか気にしなくていい • npm start が node なのか grunt なのか gulp なの か使う側は気にしなくてよい • トラブルになる要素が少ない • 基本シェルで直接叩いているのと同じ 27
  28. デメリット • 長くなるとメンテしづらい • シェくスクリプトを書いて実行するという技で逃 げられなくもない • うっかりシェル芸に走ると地獄の始まり 28
  29. TIPS: 引数を渡す • 引数を渡したい場合は--で渡す • 例: npm run test -- --grep="pattern" 29
  30. preとpostを使おう 30
  31. preとpostを使おう • preとpostで前処理・後処理が書ける • preXXXでXXXの前に実行される • postXXXでXXXの後に実行される • それでもダメならgulp使う感じで 31
  32. preとpostのいいところ • 特筆するほどいいところは、ぶっちゃけないです • 強いて言うなら、新しく何かをインストールしなく ていい • 例えばgulpを使うとgulp-XXXが必要になる 32
  33. 依存はほどほどに 33
  34. やりたいことはいっぱいある • 画像などのファイルの読み込みをしたい • モジュール管理したい • altJSで書いてトランスパイルしたい • コードを難読化・圧縮したい 34
  35. そうだツールを使おう • 画像をコピー!よし、Gulpを使おう! • モジュール管理はWebpackを使おう! • XXXはGulpのプラグインがある! • YYYはWebpackのプラグインで! • (以下繰り返し)
  36. ツール沼へようこそ 36
  37. プラグインの依存関係地獄 • webpack • babelify • babel • power-assert • karma
  38. プラグインの依存関係地獄 • webpack • babelify • babel ←Babelを5=>6に上げたい • power-assert • karma • etc, etc…
  39. YOU DIED…
  40. プラグインの功罪 • プラグインを使うと簡単に目的の機能が実現できる • しかし、依存関係が増えるため、バージョンアップ したいときに大変になったりする • XXXが更新されたのに、XXXを呼び出すプラグイ ンが更新されないとか…
  41. 入れるのは簡単 メンテするのは大変
  42. ビルド職人が この先生きのこるには 43
  43. トレンドの変化と バージョンアップ
  44. それらの闇に 飲み込まれないこと
  45. ビルドの闇に 飲まれてはならない
  46. おわり 47
Advertisement