質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Pug

Pug(旧Jade)とは、HTMLを書くためのテンプレートエンジン。タグで囲む必要がないなど記述を省略できるため、HTMLの記述が簡単になります。ファイル分割も可能で、変数やループなど便利な機能も備わっています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

解決済

1回答

591閲覧

pugをコンパイル後、コンパイルされた全てのファイルを同じ階層にまとめたい

退会済みユーザー

退会済みユーザー

総合スコア0

Pug

Pug(旧Jade)とは、HTMLを書くためのテンプレートエンジン。タグで囲む必要がないなど記述を省略できるため、HTMLの記述が簡単になります。ファイル分割も可能で、変数やループなど便利な機能も備わっています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

0グッド

0クリップ

投稿2018/03/27 06:20

前提・実現したいこと

pugをコンパイルして、出力先の一階層目に全ての出力したファイルをコピーしたい。

普通にpugをコンパイルすると、ディレクトリ構造を保ったまま出力されてしまいます。
コンパイル先の全てのファイルを一箇所にまとめたく、以下のタスクを書いたのですが思うように動きません。
最終的にはコピーした後に、コピーしたファイル以外は削除するつもりですが、コピーの部分で躓いてしまいました。。。

「コンパイル」と「コピー」を順番に行うために、run-sequenceを使い順番にタスクを実行しています。
ですが、watch中、コンパイルは行われるのですが、コピーが行われません。しかし、コンソール上にはコピーのタスクが実行されたとなっています。

コピーのタスクを単体で実行すると何故かコピーはされます。。。

なぜwatch中はコピーされないのでしょうか。

また、コピーのsrcでファイル名を指定しているのですが、これを**に変えるとコピーされませんでした。
この原因も分かる方いましたら併せてご教授お願い致します。

該当のソースコード

var gulp = require('gulp'), pug = require('gulp-pug'), plumber = require('gulp-plumber'), notify = require('gulp-notify'), rename = require('gulp-rename'), runSequence = require('run-sequence'); var paths = { src: '_src/', dest: 'dest/' } gulp.task('pug', function () { gulp.src([ paths.src + '**/*.pug', '!' + paths.src + '**/_*.pug' ]) .pipe(plumber({ errorHandler: notify.onError('<%= error.message %>') })) .pipe(pug({ pretty: true, doctype: 'html' })) .pipe(rename({ extname: '.php' })) .pipe(gulp.dest(paths.dest)); }); gulp.task('copy', function() { gulp.src(paths.dest + 'module/*.php') .pipe(gulp.dest(paths.dest)); }); gulp.task('run-sequence', function(callback) { return runSequence( 'pug', 'copy', callback ); }); gulp.task('watch', function () { gulp.watch(paths.src + '**/*.pug', ['run-sequence']) });

補足情報(FW/ツールのバージョンなど)

"gulp": "^3.9.1",
"gulp-notify": "^3.2.0",
"gulp-plumber": "^1.1.0",
"gulp-pug": "^3.3.0",
"gulp-rename": "^1.2.2",
"run-sequence": "^2.2.1"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのものズバリな記事を見つけたので共有します。

gulp の run-sequence を使うときは return を忘れずに - Qiita

これを参考にpugとcopyタスクの1行目がreturn gulp...で始まるように変更して確かめてみてください。

投稿2018/03/27 06:32

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/03/27 07:31

リンク先の記事を元にreturnを付けたら動いてくれました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問