静的サイト制作用の汎用gulpタスクテンプレートです。
node.js v6.9.1で動作確認済み
gulp v3.9.1で動作確認済み
mkdir yourProject
cd yourProject
git clone --recursive git@github.com:takumi0125/gulp-static-website-v4.git .
cd dev
npm install
gulp
コマンドで dev/src/
の中身がタスクで処理され、ディレクトリ構造を保ちつつ htdocs/
に展開されます。ただし、「 _ (アンダースコア) 」で始まるファイルやディレクトリはコンパイル・コピーの対象外です。スプライト用のソース画像を格納するディレクトリや、Sassで@import するファイルは「 _ (アンダースコア) 」をつけておけば、 htdocs/
に展開されることはありません。
gulp watch
コマンドでローカルサーバが立ち上がります。実行中は
http://localhost:50000/
で展開後のページが確認できます。
dev/pubData.json
は pug (jade) タスクを実行する際に読み込まれます。
gulp の各タスクは dev/gulp/tasks/
に格納してあります。このファイルはあまり変更することはないと思われます。
gulp の各種設定は dev/gulp/config.coffee
に定義してあります。プロジェクトごとに適宜変更してお使いください。
gulp
dev/src/
の中身を各種タスクで処理し htdocs/
に展開します。
--rerealse
オプションを指定すると、 ソースマップを生成しません。
gulp watch
ディレクトリを監視し、変更があった場合適宜タスクを実行します。また、ローカルサーバを立ち上げます。 SSI インクルードに対応しています。
デフォルトタスクを実行、または、
gulp clean
でクリーンタスクが実行されます。
クリーンタスクの対象ディレクトリは dev/gulp/config.coffee
の
# clean対象のディレクトリ (除外したいパスがある場合にnode-globのシンタックスで指定)
clearDir: [ "/**/*" ]
このように指定してあります。対象は publishDir 以下となります。 除外したいディレクトリやファイルがある場合は、こちらに設定を追加してください。
スプライト画像、webpack, jsのconcat, coffee scriptのconcatを使用する場合は、
dev/gulp/utils.coffee
に定義されている以下の関数を使用し、タスクを定義してください。
以下の関数を実行すると、watchタスクも同時に定義されます。
カスタムタスクは dev/gulp/customTasks.coffee
に記述してください
spritesmith のタスクを生成する関数です。
※ スプライト生成には gulp.spritesmith を使用しています。
※ 画像の圧縮には imagemin-pngquant を使用しています。
Params
taskName
{Object}: タスクを識別するための名前 すべてのタスク名と異なるものにするcssDir
{String}: ソース画像ディレクトリへのパス (config.srcDir
からの相対パス)imgDir
{String}: ソース CSS ディレクトリへのパス (config.srcDir
からの相対パス)outputImgName
{String}: CSS に記述される画像パス (相対パスの際に指定する)outputImgPath
{String}: 指定しなければ #{taskName}.png になるcompressImg
{Boolean}: 画像を圧縮するかどうか
"#{config.srcDir}#{imgDir}/_#{taskName}/"
以下にソース画像を格納しておくと
"#{config.srcDir}#{cssDir}/_#{taskName}.scss"
と
"#{config.srcDir}#{imgDir}/#{outputImgName or taskName}.png"
が生成されます。
coffee script で concat する場合のタスクを生成する関数です。
Params
taskName
{Object}: タスクを識別するための名前 すべてのタスク名と異なるものにするsrc
{Array|String}: ソースパス node-glob のシンタックスで指定outputDir
{String}: 最終的に出力される js が格納されるディレクトリoutputFileName
{String}: 最終的に出力される js ファイル名(拡張子なし)
webpack のタスクを生成する関数です。coffee script, babel (es2015), glsl と bowerを使用できます。
Params
taskName
{Object}: タスクを識別するための名前 すべてのタスク名と異なるものにするentries
{Array|String}: webpack の entriesオプションに渡す node-glob のシンタックスで指定src
{Array|String}: entries を除いた全ソースファイル ( watch タスクで監視するため) node-glob のシンタックスで指定outputDir
{String}: 最終的に出力されるjsが格納されるディレクトリoutputFileName
{String}: 最終的に出力される js ファイル名(拡張子なし)
javascriptのconcatタスクを生成する関数です。ソースは minify されます。
Params
taskName
{Object}: タスクを識別するための名前 すべてのタスク名と異なるものにするsrc
{Array|String}: ソースパス node-glob のシンタックスで指定outputDir
{String}: 最終的に出力される js が格納されるディレクトリoutputFileName
{String}: 最終的に出力される js ファイル名(拡張子なし)