このプロジェクトは Gulp で管理されています。
npm から必要なモジュールをインストール
$ npm install
タスク | コマンド |
---|---|
development | gulp |
development watch | gulp watch |
development coding | gulp coding |
development coding watch | gulp coding-watch |
development scripting | gulp scripting |
development scripting watch | gulp scripting-watch |
production | gulp production |
image minimizing | gulp imagemin |
create url list | gulp url-list |
unnecessary files delete | gulp clean |
pug、Stylus、JavaScript、sprite のコンパイル等をして、関連ファイルを監視します。
pug、Stylus、JavaScript、sprite の関連ファイルを監視します。
pug、Stylus、sprite のコンパイル等をして、関連ファイルを監視します。
pug、Stylus、sprite の関連ファイルを監視します。
JavaScript のコンパイル等をして、関連ファイルを監視します。
JavaScript の関連ファイルを監視します。
本番・納品用のタスクを実行します。
現状は以下を設定しています。
- pug、Stylus、JavaScript、sprite のコンパイル等(map ファイルの出力はしない)
- imagemin タスクの実行
- clean タスクの実行
必要なタスクを案件ごとに設定してください。 以下は例です。
- HTML、CSS、JavaScript の圧縮
- 文字コードを shift-jis に変更
画像を圧縮します。
URL一覧を表示するHTMLファイルを生成します。
不要なファイルを削除します。
通常は gulp production で合わせて実行されますが、
ファイルの削除だけする場合に使用。
※ CSS、JavaScript 内にはソースマップへの参照が残ります。
オプション | コマンド |
---|---|
php server | --php |
タスクコマンドの後に追加して使用します。
# 例
$ gulp coding --php
ローカルサーバーをPHPで起動します。
ローカルサーバーは BrowserSync を使用しています。
- 3000 -> /htdocs/ をルートとして起動
- 3001 -> BrowserSync のコントロールパネルを起動
- 3002 -> PHP 起動時のプロキシで使用
- 3003 -> /.url-list/ をルートとして起動(URL一覧表示用)
- 3004 -> /.esdoc/ をルートとして起動(ESDoc覧表示用)
pug をコンパイルしています。
/pug/src/ 以下の pug ファイルをコンパイルし /htdocs/ 以下に出力します。
関数名 | 使用している内容 |
---|---|
rename | 拡張子変換 |
crLfReplace | 改行コード変換 |
iconv | 文字コード変換 |
変数名 | 内容 |
---|---|
dirname | ディレクトリ名 |
filename | ファイル名 |
relative | 相対パス |
isProduction | productionタスク時のフラグ |
用意されている filters
filters名 | 内容 |
---|---|
do-nothing | そのまま出力(先頭は改行。インデントオプションあり。 ) |
1行目に {{indent=[数値]}}
を追加することで数値の数だけスペースを追加します。
// 例
:do-nothing
{{indent=2}}
<div>
<p>sample</p>
</div>
テンプレートファイル(pug)と json から html 自動生成します。
一部だけ違うページを大量生成する際におすすめ。
/json/factorys/ 以下の pug ファイル。
{{vars}}
に json から取得したデータが変数として挿入されます。
/json/factorys/ 以下の json ファイル。
{ "factorys/index.pug": { // 使用するテンプレートを指定
"factory/index.pug": { // 出力先のパスを指定(拡張は.pug)
"factoryTitle": "タイトル1", // key が変数名、value が 値として出力される。
"factoryContents": "コンテンツ1"
},
"factory/hoge/index.pug": {
"factoryTitle": "タイトル2",
"factoryContents": "コンテンツ2<br>コンテンツ2"
}
}}
// json ですので、カンマの位置に気をつける。
Stylus をコンパイルしています。
/stylus/src/ 以下の stylus ファイルをコンパイルし /htdocs/ 以下に出力します。
/images/sprites/ 以下の画像をスプライト化して /htdocs/ 以下に出力します。
最終ディレクトリ名がファイル名になります。
例
/images/sprites/images/sample/a.png
/images/sprites/images/sample/b.png
↓
/htdocs/images/sample.png
Stylus で使用する為に /stylus/imports/sprite.styl が出力されます。
mixins が用意されているので import して使用します。
// 例
@import "../../imports/sprite"
#a
sprite("images/sample/a.png") // スプライト化する前のフィアルパスを指定
#b
sprite("images/sample/b.png")
gulp production
実行時には /images/src/ 以下に出力されて、image minimizing タスクが実行されます。
/images/src/ 以下の画像を圧縮して /htdocs/ 以下に出力します。
gulp production
実行時に一度だけ実行されます。
gulp imagemin
でも個別に実行できます。
Babel(es2015、stage-0)をトランスパイルして、webpack でバンドルします。
/webpac/src/ 以下の js または ts ファイルをコンパイル(トランスパイル)し /htdocs/ 以下に出力します。
パッケージマネージャーには npm、Bower が使えます。
minファイルなど package.json で指定されている main 以外のファイルを使用したい場合は、
オプションの alias に指定すると便利。
// 例
alias: {
'lodash' : 'lodash/dist/lodash.min',
'Velocity' : 'velocity/velocity.min',
'Velocity.ui': 'velocity/velocity.ui.min',
},
/.esdoc/ 以下に ESDoc でAPIドキュメントを出力します。
出力コマンド
npm run esdoc
/test/ 以下に Jasmine & Karma でテストできる環境を用意しています。
テストコマンド
npm run test
3003ポートにURL一覧を表示します。
/.url-list/tmp.html がテンプレートファイルになっていて
/.url-list/index.html にファイル一覧のデータを追加して出力されます。
テストサーバーへリンクさせたい場合は2パターンあります。
以下のドメインを変更して url-list タスクを実行し /.url-list/index.html を更新して、ブラウザで直接表示。
var domain = 'domain.com';
以下を変更すると /.url-list/index.html と同じファイルが
/htdocs/url-list.html として出力されます。
(変更後に url-list タスクの実行が必要)
このファイルをテストサーバーにアップして表示。
const outputUrlListToHtdocs = false;
↓
const outputUrlListToHtdocs = true;
※ 不要ファイルですので納品ファイルに含めないように注意。
直接消すか、納品時に gulp production か gulp clean するなどで対応。
不要ファイル削除をします。
現状は以下のファイルを削除するようにしています。
- .DS_Store
- Thumb.db
- /htdocs/url-list.html
- /htdocs/ 以下の map ファイル
変更する場合は以下を変更します。
del([ './**/.DS_Store', './**/Thumb.db', './htdocs/url-list.html', './htdocs/**/*.map' ]);