More Related Content
PDF
PDF
PDF
asm.jsとWebAssemblyって実際なんなの? PDF
PDF
CSS Nite LP26 CodeKitで始める次世代Web制作 PDF
PDF
PDF
Amplify Console使ってみたらいい感じ What's hot
PPTX
ディープラーニングをAWS LambdaとStep Functionで自動化する PDF
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。 PPTX
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている PDF
PDF
これから始める人のためのjQuery入門 先生:大竹 孔明 KEY
PDF
PDF
早く家へ帰るための
Grunt入門
[+gulp紹介] PDF
PDF
やすい・はやい・うまいMTのホスティング環境を求めて - jaws-ug-3to-2013-sprint PPTX
As you like, PHP on Azure - お気に召すままに! PDF
PDF
PDF
Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること PDF
PPTX
Node.jsに縁のない職場でnode.jsを使い始める戦術 PPTX
PPT
ODP
第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) 発表資料 - さくらのクラウド操作案内 Viewers also liked
PDF
PDF
PDF
PPTX
PDF
Grunt.jsを使った Expressの開発環境構築 PDF
フロント開発をがんばるためにGulpとGruntに入門してみた PDF
PDF
PDF
PDF
PDF
Node.js Error & Debug Leveling PDF
Similar to GruntでJavaScript 前作業の自動化!
ODP
PDF
Unityのオンラインゲームをhtmlに移植してわかったこと PDF
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話 PDF
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04 PPTX
Gruntでjava script前作業の自動化! PPTX
13016 n分で作るtype scriptでnodejs PDF
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~ PDF
PhpStormとGrunt.jsで作るCakePHP快適開発環境 PDF
PDF
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013 PDF
WEBアプリケーションビルド・ テストツール YEOMAN PDF
PDF
Gws 20130315 gradle_handson PDF
Unity に於けるモバイルプラットフォーム向けビルド自動化のおはなし PDF
Webサイト・フロントエンドの高速化とgrunt.jsについて PPTX
PDF
PDF
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia PDF
JS開発におけるTDDと自動テストツール利用の勘所 PDF
More from leverages_event
PPTX
Node.js×mongo dbで3年間サービス運用してみた話 PDF
DMM.comラボはなぜSparkを採用したのか?レコメンドエンジン開発の裏側をお話します! PDF
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~ PDF
【ヒカ☆ラボ】アーキテクト養成講座「入門編」 折田 武己 氏 登壇資料 20171205 PDF
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121 PDF
【ヒカ☆ラボ】 dely株式会社 深尾 もとのぶ氏 登壇資料 20171121 PPTX
PDF
【ヒカ☆ラボ】 dely株式会社 三笠 斉輝氏 登壇資料 20171121 PDF
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア PDF
PPTX
【ヒカ☆ラボ】 株式会社AMG Solution 山口 博史氏登壇資料 20170817 PDF
20171206 tsumugu4 人工知能特集_v1.00_抜粋 PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」UIデザイナー PDF
【ヒカ☆ラボ】 dely株式会社 大竹 雅登氏 登壇資料 20171121 PPTX
PPTX
ヒカ☆ラボ 株式会社PR TIMES 山田 和広氏登壇資料 20161129 PPTX
ヒカ☆ラボ 株式会社PR TIMES 新井 隆士氏登壇資料 20161129 PDF
ヒカ☆ラボ ユニティ・テクノロジーズ・ジャパン合同会社 安原 祐二氏登壇資料_20170119 PDF
GruntでJavaScript 前作業の自動化!
- 1.
- 2.
自己紹介
● 金融系 ->組み込み系 -> SNS 系 -> ゲーム系 -> 広告系を経て DMM へ
● 得意分野はインフラからフロントエンドまで、本業は ServerSide エンジ
ニア。デザインは無理
● 大規模システムのアーキテクト、大規模データ基盤の構築周り
● DMM では検索・リコメンド・行動解析まわりの研究開発やってます。
● 最近は java,hdfs,hive,python,nodejs,scala,erlang,spark,aerospike 周りを
良く触ってます。
- 3.
- 4.
- 5.
- 6.
DMM で困ってた事は何か?
● jsファイルの minify を忘れてリリース失敗する
● テストを作ったけど、忙しくなって誰も流さなくなる
● チェックスタイル作ったけど形骸化する
● リリース手順とかリリースする頃には忘れる
● リリース手順書が古くリリース手順通りにやったらリリース失敗する
● バグの修正5分で終わるのにリリースに 1 時間かかる
●js ファイルの minify を忘れてリリース失敗する
●テストを作ったけど、忙しくなって誰も流さなくなる
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
Grunt のおさらい
● jsの minify 等の繰り返し作業の自動化
● Plugin を追加して機能を拡張
● Grunt を中心としたエコシステム
uglify
copy
concat
ad
d
ad
d
- 15.
- 16.
- 17.
Grunt の環境構築
npm install-g grunt-cli
mkdir hikarabo && cd hikarabo
npm init
npm install grunt --save
npm install -g grunt-cli
mkdir hikarabo && cd hikarabo
npm init
npm install grunt --save
● 出来上がった package.json
- 18.
- 19.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 34.
- 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.