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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

gulp

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

Q&A

解決済

2回答

424閲覧

gulpタスクでビルド時にjsファイルが出力される前に終了してしまう。

fort-space

総合スコア7

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

gulp

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

0グッド

0クリップ

投稿2018/09/12 07:45

uglify-jsclean-css でminifiedするタスクをgulpで自動化するスクリプトを書こうとしています。

下記のスクリプトから、 build タスクを実行後、それぞれのタスクが実行されるところまでは正常に動いているようですが、 minify-js タスクが終了する前に build タスク自体が終了してしまいます。

javascript

1const gulp = require('gulp'); 2const sass = require('gulp-sass'); 3const plumber = require('gulp-plumber'); 4const sourcemaps = require('gulp-sourcemaps'); 5const browserSync = require('browser-sync'); 6const uglify = require('gulp-uglify'); 7const cleanCSS = require('gulp-clean-css'); 8const concat = require('gulp-concat'); 9const babel = require('gulp-babel'); 10 11gulp.task('sass', function(){ 12 return gulp.src('./src/style/*.scss') 13 .pipe(plumber()) 14 .pipe(sourcemaps.init()) 15 .pipe(sass()) 16 .pipe(sourcemaps.write('./')) 17 .pipe(gulp.dest('./dist/css/')); 18}); 19 20// ブラウザリロード 21gulp.task('browser-sync', function() { 22 browserSync({ 23 server: { 24 baseDir: "./dist", 25 index : "index.html" 26 } 27 }); 28}); 29gulp.task('bs-reload', function () { 30 browserSync.reload(); 31}); 32 33//JS圧縮 34gulp.task('minify-js', function() { 35 return gulp.src([ 36 "./node_modules/jquery/dist/jquery.js", 37 "./node_modules/jquery.mousewheel/jquery.mousewheel.js", 38 "./node_modules/autosize/dist/autosize.js", 39 "./node_modules/cryptico/lib/cryptico.js", 40 "./node_modules/twemoji/2/twemoji.js", 41 "./src/javascript/main.js", 42 "./src/javascript/mode_global.js", 43 "./src/javascript/mode_config.js", 44 "./src/javascript/mode_instance.js", 45 ]) 46 .pipe(sourcemaps.init()) 47 .pipe(babel({ presets: ['es2015'] })) 48 //.pipe(babel()) 49 .pipe(uglify() 50 .on('error', function(e){ 51 console.log(e); 52 }) 53 ) 54 .pipe(concat('app.min.js')) 55 .pipe(sourcemaps.write('.')) 56 .pipe(gulp.dest('./dist/js')); 57}); 58 59//CSS圧縮 60gulp.task('minify-css', function() { 61 return gulp.src("./dist/css/*.css") 62 .pipe(sourcemaps.init()) 63 .pipe(cleanCSS()) 64 .pipe(concat('style.min.css')) 65 .pipe(sourcemaps.write('.')) 66 .pipe(gulp.dest('./dist/css')); // overwrite 67}); 68 69// watchタスク(html,js,sassファイル変更時に実行するタスク) 70gulp.task('sass-watch', ['sass','browser-sync'], function(){ 71 let watcher = gulp.watch('./src/style/*.scss', ['sass']); 72 gulp.watch("./*.html",['bs-reload']); 73 watcher.on('change', function(event) { 74 console.log('コンパイルOK!'); 75 }); 76 gulp.watch("./src/style/*.scss",['bs-reload']); 77 gulp.watch("./src/javascript/*.js",['bs-reload']); 78}); 79 80gulp.task('default', ['sass-watch','browser-sync']); 81gulp.task('build',['minify-css','minify-js']);

タスク実行時のログは以下の通りです。

minify-cssタスクは完了していますが、minify-jsタスクおよび親タスクであるbuildも完了メッセージが表示されません。

bash

1$ npx gulp build 2[16:07:16] Using gulpfile ~/repository/project/gulpfile.js 3[16:07:16] Starting 'minify-css'... 4[16:07:16] Starting 'minify-js'... 5[16:07:19] Finished 'minify-css' after 3.22 s 6$

上記タスク実行後、 ./dist/css にminifiedされたcssとソースマップは出力されますが、 ./dist/js にjsファイルが出力されません。

解決方法をご存知でしたら、ご教示の程、宜しくお願いします。

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

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

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

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

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

guest

回答2

0

自己解決

自己解決しました。

やはりpresetの指定方法が間違えていたようでした。

@gulp/preset-env を導入してプリセットに @gulp/env を指定することで正しく出力されました。

中途半端に古い記事を参考にしたのが悪かったようです。ありがとうございました。

投稿2018/09/13 06:29

fort-space

総合スコア7

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

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

0

いろいろ試してみたところ、どうもbabelでes2015をプリセットに指定していると発生する症状だということがわかりました。

しかしES6以降のコードも含まれるためこの記述を省くことはできません。更に調べてみることにします。

投稿2018/09/13 06:09

fort-space

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問