回答編集履歴

1

forEachの挙動の部分を解説、回答を追記

2019/10/04 07:50

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -1,4 +1,96 @@
1
1
  原因がわかりましたので、回答させていただきます。
2
+
3
+
4
+
5
+ 原因は、元回答プラスαでした。
6
+
7
+ `js-browserify`タスクの中で、
8
+
9
+ return config....と実行しておりますが、
10
+
11
+ forEachは何も値を返さないので、
12
+
13
+ 次に実行している、`js-uglify`は何もない(undefined状態)ものに対して、
14
+
15
+ 何も実行できない、というのが原因です。
16
+
17
+ returnさせなきゃいけないのは、gulpオブジェクトですので、下記のように修正してはいかがでしょうか?
18
+
19
+
20
+
21
+ ```javascript
22
+
23
+ gulp.task('js-browserify', function() {
24
+
25
+ // returnさせるようのローカル変数を用意
26
+
27
+ let gulpData;
28
+
29
+
30
+
31
+ // まずはforEachを実行してしまう
32
+
33
+ config.js.concat.forEach(function(item, index, arr) {
34
+
35
+ // あらかじめ、返す用の変数に格納しておく
36
+
37
+ const gulpInnerData = browserify (
38
+
39
+ {
40
+
41
+ entries: item.source,
42
+
43
+ extensions: ['.js']
44
+
45
+ }
46
+
47
+ )
48
+
49
+ .bundle()
50
+
51
+ .on('error', function(e){
52
+
53
+ console.log(e);
54
+
55
+ })
56
+
57
+ .pipe(source(item.publish))
58
+
59
+ .pipe(gulp.dest('dist/js/'));
60
+
61
+
62
+
63
+ // 走査の最後なら、上スコープの変数に格納
64
+
65
+ if (index + 1 == arr.length) {
66
+
67
+ gulpData = gulpInnerData;
68
+
69
+ }
70
+
71
+ });
72
+
73
+ // 最終的なGulpオブジェクトを返す
74
+
75
+ return gulpData;
76
+
77
+ });
78
+
79
+
80
+
81
+ ```
82
+
83
+
84
+
85
+ 上記プラス、元回答のrunSequenceの同期実行を行えば、うまくいくはずです。
86
+
87
+
88
+
89
+
90
+
91
+ -------- 以下元回答 --------
92
+
93
+
2
94
 
3
95
  一番目の処理である、`js-browserify`タスクが**完了される前**に、
4
96