Soumettre la recherche
Mettre en ligne
Gruntでjava script前作業の自動化!
•
Télécharger en tant que PPTX, PDF
•
16 j'aime
•
2,234 vues
T
Tanaka Yuichi
Suivre
ヒカラボ2015-01-16 presented by DMM
Lire moins
Lire la suite
Ingénierie
Signaler
Partager
Signaler
Partager
1 sur 37
Télécharger maintenant
Recommandé
TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術
Masakazu Matsushita
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Masakazu Matsushita
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
Masakazu Matsushita
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ
Masakazu Matsushita
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
トレジャーデータ 導入体験記 リブセンス編
トレジャーデータ 導入体験記 リブセンス編
Kentaro Yoshida
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
Masahiro Kiura
Recommandé
TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術
Masakazu Matsushita
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Masakazu Matsushita
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
Masakazu Matsushita
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ
Masakazu Matsushita
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
トレジャーデータ 導入体験記 リブセンス編
トレジャーデータ 導入体験記 リブセンス編
Kentaro Yoshida
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
Masahiro Kiura
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
Takayuki Fukumoto
Jjug ccc
Jjug ccc
Tanaka Yuichi
MongoDB3.2の紹介
MongoDB3.2の紹介
Tetsutaro Watanabe
gcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakami
Hiroshi Kawakami
Monitoring Intelligence
Monitoring Intelligence
netopscoding
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
真治 米田
Drupal補完計画
Drupal補完計画
Kuniyoshi Tone
JAMstackは眠らない
JAMstackは眠らない
Kuniyoshi Tone
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
Tokoroten Nakayama
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
gree_tech
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Yasuhiro Matsuo
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
真治 米田
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Satoshi Hirata
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所
Takeshi HASEGAWA
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
GCP vs 他社クラウド
GCP vs 他社クラウド
Hasegawa Yusuke
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo!デベロッパーネットワーク
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
JubatusOfficial
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
jsCafe v13 Grunt
jsCafe v13 Grunt
Shinya Sugo
Contenu connexe
Tendances
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
Takayuki Fukumoto
Jjug ccc
Jjug ccc
Tanaka Yuichi
MongoDB3.2の紹介
MongoDB3.2の紹介
Tetsutaro Watanabe
gcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakami
Hiroshi Kawakami
Monitoring Intelligence
Monitoring Intelligence
netopscoding
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
真治 米田
Drupal補完計画
Drupal補完計画
Kuniyoshi Tone
JAMstackは眠らない
JAMstackは眠らない
Kuniyoshi Tone
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
Tokoroten Nakayama
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
gree_tech
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Yasuhiro Matsuo
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
真治 米田
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
Satoshi Hirata
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所
Takeshi HASEGAWA
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
GCP vs 他社クラウド
GCP vs 他社クラウド
Hasegawa Yusuke
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo!デベロッパーネットワーク
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
JubatusOfficial
Tendances
(20)
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
Jjug ccc
Jjug ccc
MongoDB3.2の紹介
MongoDB3.2の紹介
gcpug_okinawa_#2_hiroshi_kawakami
gcpug_okinawa_#2_hiroshi_kawakami
Monitoring Intelligence
Monitoring Intelligence
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
Drupal補完計画
Drupal補完計画
JAMstackは眠らない
JAMstackは眠らない
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
20201102 postgresql unconference_debility
20201102 postgresql unconference_debility
qpstudy 2014.04 ハードウェア設計の勘所
qpstudy 2014.04 ハードウェア設計の勘所
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
GCP vs 他社クラウド
GCP vs 他社クラウド
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
Similaire à Gruntでjava script前作業の自動化!
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
jsCafe v13 Grunt
jsCafe v13 Grunt
Shinya Sugo
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
kamiyam .
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
0621 ndk game
0621 ndk game
cat kaotaro
Grunt入門
Grunt入門
Tsuyoshi Maeda
Android カスタムROMの作り方
Android カスタムROMの作り方
Masahiro Hidaka
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
真治 米田
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
Osc10do linux nextstep
Osc10do linux nextstep
smokey monkey
RoR周辺知識15項目
RoR周辺知識15項目
saiwaki
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット・パッカード株式会社
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
Mori Shingo
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
MichaelFindlater
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
Naoya Hashimoto
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
Similaire à Gruntでjava script前作業の自動化!
(20)
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
jsCafe v13 Grunt
jsCafe v13 Grunt
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
0621 ndk game
0621 ndk game
Grunt入門
Grunt入門
Android カスタムROMの作り方
Android カスタムROMの作り方
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Osc10do linux nextstep
Osc10do linux nextstep
RoR周辺知識15項目
RoR周辺知識15項目
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
【日本語版】Styler: Our Journey to GCP
【日本語版】Styler: Our Journey to GCP
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Plus de Tanaka Yuichi
Product managershouldask mvp
Product managershouldask mvp
Tanaka Yuichi
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
Tanaka Yuichi
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
Tanaka Yuichi
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
Tanaka Yuichi
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよ
Tanaka Yuichi
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
Tanaka Yuichi
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
Tanaka Yuichi
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
Tanaka Yuichi
Watson summit 2016_j2_5
Watson summit 2016_j2_5
Tanaka Yuichi
Big datauniversity
Big datauniversity
Tanaka Yuichi
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Tanaka Yuichi
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
Tanaka Yuichi
Plus de Tanaka Yuichi
(12)
Product managershouldask mvp
Product managershouldask mvp
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
PythonでDeepLearningを始めるよ
PythonでDeepLearningを始めるよ
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
Watson summit 2016_j2_5
Watson summit 2016_j2_5
Big datauniversity
Big datauniversity
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
Gruntでjava script前作業の自動化!
1.
GruntでJavaScript前作業 の自動化! 2014.01.16 CTO室 田中裕一
2.
自己紹介 ● 金融系 ->
組み込み系 -> SNS系 -> ゲーム系 -> 広告系を経てDMMへ ● 得意分野はインフラからフロントエンドまで、本業はServerSideエンジニ ア。デザインは無理 ● 大規模システムのアーキテクト、大規模データ基盤の構築周り ● DMMでは検索・リコメンド・行動解析まわりの研究開発やってます。 ● 最近はjava,hdfs,hive,python,nodejs,scala,erlang,spark,aerospike周りを良 く触ってます。
3.
本日のお品書き 1.どうして自動化するのか(10分) ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践(30分) ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
4.
どうして自動化するのか?
5.
1.どうして自動化するのか 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
6.
DMMで困ってた事は何か? ● jsファイルのminifyを忘れてリリース失敗する ● テストを作ったけど、忙しくなって誰も流さなくなる ●
チェックスタイル作ったけど形骸化する ● リリース手順とかリリースする頃には忘れる ● リリース手順書が古くリリース手順通りにやったらリリース失敗する ● バグの修正5分で終わるのにリリースに1時間かかる リリースがリスキーで面倒!
7.
1.どうして自動化するのか 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
8.
どこに時間を使うべきか? ● リリース・コンパイル等、繰り返し作業に人手を使わない ● ドキュメントの生成・コードチェック・テストは自動化し、 形骸化させない ●
特定の人しか出来ない作業を作らない ● 仕様書・手順書は最低限作り、設定ファイルをベースにす る 気をつける(た)所
9.
どこに時間を使うべきか? ● 1日数回のリリースも可能、しかも品質は一定 ● 自動なのでdocs,コードチェック,テストを意識しなくても良い ●
ボタン押すだけなら誰(エンジニア以外)でも出来る ● 仕様書・手順書のメンテコストが無い 得られたメリットは何か? 機能開発・研究開発というエンジニアの本来の業務時間を作る
10.
1.どうして自動化するのか 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
11.
自動化レイヤの確認 ● 今回の取り組み全体感
12.
自動化レイヤの確認 ● いろんなレイヤで自動化 ● 今日の取り扱い
13.
1.どうして自動化するのか 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
14.
Gruntのおさらい ● jsのminify等の繰り返し作業の自動化 ● Pluginを追加して機能を拡張 ●
Gruntを中心としたエコシステム uglify copy concat add add
15.
いきなり実践
16.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
17.
Gruntの環境構築 npm install -g
grunt-cli mkdir hikarabo && cd hikarabo npm init npm install grunt --save 1. grunt-cliをインストール 2. プロジェクトディレクトリを作って 3. npm initコマンドでpackage.jsonを作成し ています。 4. npmコマンドでgruntをインストール ※Node.jsのインストールは割愛します。 ● 出来上がったpackage.json
18.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
19.
最初のGruntfile.jsの作成 今回扱うディレクトリ構造 1. build :
minifyしたjs等、output先 2. out : Docsの吐き出し先 3. public : リリースdir外部から参照される 4. source : 大本になるjsファイル置き場
20.
最初のGruntfile.jsの作成 module.exports = function(grunt)
{ grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), }); grunt.registerTask('default','show logs',function(){ grunt.log.write('console log?').ok(); }); }; 1. Gruntfile.jsの名前で保存 2. gruntコマンドで実行
21.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
22.
複数のjsファイルをconcatして結合する module.exports = function(grunt)
{ grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat:{ hikajs: { src: [ 'source/main.sample.js', 'source/main2.sample.js', ], dest: 'build/concat.hikarabo.js' } } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default',['concat:hikajs']); grunt.registerTask('default:concat', ['concat:hikajs']); 1. npmコマンドでpluginをインストール 2. Gruntfile.jsを編集 3. grunt又はgrunt concatで実行 npm install grunt-contrib-concat --save
23.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
24.
jsファイルをminifyしてファイルサイズを小さくする module.exports = function(grunt)
{ grunt.initConfig({ (略) uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */¥n' }, build: { src: 'build/concat.hikarabo.js', dest: 'build/<%= pkg.name %>.min.js' } } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('default',['concat:hikajs','uglify']); grunt.registerTask('default:concat', ['concat:hikajs']); 1. npmコマンドでpluginをインストール 2. Gruntfile.jsを編集 3. gruntで実行 npm install grunt-contrib-uglify --save 省略無しバージョン
25.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
26.
jsファイルをcopyして公開準備をする module.exports = function(grunt)
{ grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), (略) copy:{ main: { src:'build/*.min.js', dest: 'public/js/' } } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.registerTask('default',['concat:hikajs','uglify','copy']); grunt.registerTask('default:concat', ['concat:hikajs']); }; 1. npmコマンドでpluginをインストール 2. Gruntfile.jsを編集 3. gruntで実行 npm install grunt-contrib-copy --save 省略無しバージョン
27.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
28.
yuidocを使ってリリース時にDocumentを自動生成する (略) yuidoc: { compile: { name:
'<% pkg.name %>', description: '<%= pkg.description %>', version: '<%= pkg.version %>', url: '<%= pkg.homepage %>', options: { paths: [ 'source/' ], outdir: 'out/' } (略) grunt.loadNpmTasks('grunt-contrib-yuidoc'); (略) grunt.registerTask('build', ['yuidoc']); }; 1. npmコマンドでyuidocをインストール 2. npmコマンドでpluginをインストール 3. Gruntfile.jsを編集 4. grunt buildで実行 npm install yuidocjs -g npm install grunt-contrib-yuidoc --save 省略無しバージョン
29.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
30.
gjslingを使ってCodeCheckを自動で行う (略) gjslint: { options: { flags:
[ '--flagfile .gjslintrc' ], reporter: { name: 'console' } }, lib: { src: [ 'source/*.js' ] } } (略) grunt.loadNpmTasks('grunt-gjslint'); grunt.registerTask('default',['gjslint','concat:hikajs','uglify','copy']); }; 1. npmコマンドでpluginをインストール 2. Gruntfile.jsを編集 3. .gjslintrcを作成 4. gruntで実行 npm install grunt-gjslint --save 省略無しバージョン 失敗時 成功時 .gjslintrc
31.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
32.
jsファイルの変更時に自動で処理するようにする (略) watch: { files: [ 'source/*.js', ], tasks:
[ 'gjslint', 'concat:hikajs', 'uglify', 'copy', ] }, (略) grunt.loadNpmTasks('grunt-contrib-watch'); }; 1. npmコマンドでpluginをインストール 2. Gruntfile.jsを編集 3. grunt watchを実行 npm install grunt-contrib-watch --save 省略無しバージョン
33.
本日のお品書き 1.どうして自動化するのか ● DMMで困っていた事は何か? ● どこに時間を使うべきか? ●
自動化のレイヤの確認 ● Gruntのおさらい 2.いきなり実践 ● Gruntの環境構築 ● 最初のGruntfile.jsの作成 ● 複数のjsファイルをconcatで結合する ● jsファイルをminifyしてファイルサイズを小さくする ● jsファイルをコピーして公開準備をする ● yuidocを使ってリリース時にDocumentを自動生成する ● gjslintを使ってCodeCheckを自動で行う ● jsファイルの変更時に自動で処理するようにする ● bower、bower-installer、Gruntを使って外部のjsを管理する
34.
bower,bower-installer,gruntを使って外部のjsを管理する ● webAppは様々なframework,libraryで構成されている ● bowerはそれらpackageの管理をする ●
Bower+gruntで外部packageの管理も自動化
35.
Bowerの準備とjQueryのインストール 1. npmコマンドでBowerをインストール 2. bower
initを実行 3. bowerでjqueryをインストール npm install bower -g bower init bower install jqeury --save { "name": "hikarabo", "version": "0.0.0", "authors": [ "tanaka-yuichi <tanaka-yuichi@dmm.com>" ], (略) 出来上がったbower.json
36.
Bower-installerの準備と公開ディレクトリへのデプロイ 1. npmコマンドでBower-installerをインストール 2. bower.jsonにinstallセクションを追加 3.
bower-installerを実行 npm install bower-installer -g (略) "dependencies": { "jquery": "~2.1.3" }, "install":{ "path":{ "js":"public/js" }, "sources":{ "jquery":"bower_components/jquery/dist/jquery.min.js" } } } jqueryのデプロイを追加したbower.json
37.
以上。
Télécharger maintenant