回答編集履歴
1
コード部分を修正
answer
CHANGED
@@ -53,25 +53,42 @@
|
|
53
53
|
const fs = require("fs");
|
54
54
|
|
55
55
|
// __dirnameはこのスクリプトファイルのディレクトリの絶対パスを示す
|
56
|
-
const
|
56
|
+
const assetsDir = `${__dirname}/../assets/scripts`;
|
57
|
-
.filter(it => /\w.js$/.test(it)); // 拡張子を見てJSファイルでなきゃ捨てる
|
58
57
|
|
59
|
-
console.log(targets);
|
60
|
-
|
58
|
+
let output = "";
|
59
|
+
for (let it on fs.readdirSync(assetsDir)) {
|
60
|
+
// 拡張子を見てJSファイルでなきゃ捨てる
|
61
|
+
if (!/\w.js$/.test(it)) continue;
|
61
62
|
|
62
|
-
let js = "";
|
63
|
-
for (let it on targets) {
|
64
63
|
// バイナリオブジェクトで取れる事があるので.toStringメソッドを叩いてStringにしておくこと
|
65
64
|
const file = fs.readFileSync(`${__dirname}/../assets/scripts/${it}`).toString();
|
66
65
|
if (js != "") js += "\n";
|
67
|
-
js += file;
|
66
|
+
js += file;
|
68
67
|
}
|
69
68
|
|
70
69
|
fs.writeFileSync(`${__dirname}/../output/bundle.js`, js);
|
71
70
|
```
|
72
71
|
|
73
72
|
Gulp使ってもこれと似たようなコードは記述しないといけないですからね。
|
73
|
+
因みにメソッドチェーンを駆使するとこんな感じ
|
74
|
+
コード量的にも許容範囲って感じですね。
|
74
75
|
|
76
|
+
まぁストリームで処理するGulpはメモリの問題で死ぬ可能性がぐっと下がりますが、
|
77
|
+
私の回答は馬鹿でかいファイルを読み込むと死にます。
|
78
|
+
まぁMB超えるようなファイルは作らないと思うので大丈夫ですかね。
|
79
|
+
|
80
|
+
```js
|
81
|
+
#!/usr/bin/env node
|
82
|
+
|
83
|
+
const fs = require("fs");
|
84
|
+
const assetsDir = `${__dirname}/../assets/scripts`;
|
85
|
+
const output = fs.readdirSync(assetsDir)
|
86
|
+
.filter(it => /\w.js$/.test(it))
|
87
|
+
.map(it => fs.readFileSync(`${assetsDir}/${it}`).toString())
|
88
|
+
.join("\n");
|
89
|
+
fs.writeFileSync(`${__dirname}/../output/bundle.js`, output);
|
90
|
+
```
|
91
|
+
|
75
92
|
---
|
76
93
|
|
77
94
|
【おまけ】ちょっと戻ってBashの力で解決する
|