forked from nsjcy/frontEnd/nsjcy

liuwh
2020-03-29 9c7c21e8eacda173feb418bdfe739f7f97358233
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const path = require('path');
const base = process.env.INIT_CWD;
const chalk = require('chalk');
const fs = require('fs');
function multiply(paths, join = (one, two) => one + two) {
  return paths.reduce((prevArr, nextArr) => prevArr.reduce((array, prevStr) =>
    array.concat(nextArr.map(nextStr => join(prevStr, nextStr))), []));
}
 
function parents(base) {
  const result = [];
  while (true) {
    const parsed = path.parse(base);
    if (!parsed.base) return result;
    result.push(base);
    base = parsed.dir;
  }
  return result
}
 
module.exports = function (action) {
  const files = multiply([
    parents(base), ['', 'src', 'view'],
    multiply([
      ['index', 'home', 'test'],
      ['.jsx', '.tsx', '.js', '.ts']
    ])
  ], path.join
  );
 
  if (!files.some(file => {
    if (fs.existsSync(file)) {
      console.log(chalk.green(`Entry: ${file}\n`));
      require('./webpack')({
        filename: path.basename(file).split('.')[0] + '.js',
        basename: path.resolve(file, '../../'),
        entry: file,
        action
      });
      return true;
    }
  })) {
    console.log(chalk.red('Entry file not found...'));
  }
}