123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- const fs = require('fs');
- const path = require('path');
- const root = process.cwd();
- const readdirSync = p => fs.readdirSync(p);
- const existsSync = p => fs.existsSync(p);
- const isFile = p => fs.statSync(p).isFile();
- const isDirectory = p => fs.statSync(p).isDirectory();
- const getBaseName = p => path.basename(p);
- const getExtName = p => path.extname(p);
- const getFileName = p => getBaseName(p);
- const getDirName = p => path.dirname(p);
- const join = (...ps) => path.join(root, ...ps);
- const writeJsonToFile = p => json =>
- fs.writeFileSync(p, JSON.stringify(json, null, 2));
- const tools = require('./src/tools')
- const config = {
- // origin: 'https://cdn-ali.jianyu360.com',
- libName: 'lib',
- origin: '',
- root: '/'
- }
- // 递归获取目录下所有文件,并组合为对象树
- const search = p => {
- if (existsSync(p)) {
- if (isFile(p)) {
- return {
- name: getFileName(p),
- path: getDirName(p)
- };
- } else if (isDirectory(p)) {
- const paths = readdirSync(p);
- return paths.map(_p => {
- const tmp = path.join(p, _p);
- if (isFile(tmp)) {
- return search(tmp);
- } else {
- return {
- name: getFileName(_p),
- list: search(tmp)
- };
- }
- });
- }
- }
- };
- // 将手机号
- const getSourceMap = m => {
- // 最外层库名
- return m.filter(lib => lib.list).map(lib => {
- // 下一层版本号
- const versions = lib.list.map(version => {
- // 当前路径
- const rPath = `/${config.libName}/${lib.name}/${version.name}/`
- const sourceArr = tools.getAllFilePath(join(rPath))
- const sourcePathArr = sourceArr.map(s => config.origin + s.replace(__dirname, '').replace(/\\/g, '\/'))
- console.log(rPath)
- return {
- version: version.name,
- // sourcePath: version.list,
- sourcePath: sourcePathArr
- }
- })
- return {
- lib: lib.name,
- versions
- }
- })
- }
- writeJsonToFile('./libs.json')(getSourceMap(search(config.libName)))
|