Ver código fonte

feat: libs.json生成逻辑优化

cuiyalong 4 anos atrás
pai
commit
43ddce59a9
2 arquivos alterados com 44 adições e 13 exclusões
  1. 18 13
      main.js
  2. 26 0
      src/tools.js

+ 18 - 13
main.js

@@ -13,12 +13,16 @@ 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)) {
@@ -43,21 +47,22 @@ const search = p => {
   }
 };
 
+// 将手机号
+
 const getSourceMap = m => {
-  return m.map((lib, i) => {
-    const versions = lib.list.map((version, j) => {
-      const isArr = Array.isArray(version.list)
-      let sourcePath = []
-      if (isArr) {
-        sourcePath = version.list.map((file, k) => {
-          return `${config.origin}${config.root}${file.path.replace(/\\/g, '\/')}/${file.name}`
-        })
-      } else {
-        sourcePath.push(`${config.origin}${config.root}${version.path.replace(/\\/g, '\/')}/${version.name}`)
-      }
+  // 最外层库名
+  return m.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
+        // sourcePath: version.list,
+        sourcePath: sourcePathArr
       }
     })
     return {
@@ -67,4 +72,4 @@ const getSourceMap = m => {
   })
 }
 
-writeJsonToFile('./libs.json')(getSourceMap(search('./lib')));
+writeJsonToFile('./libs.json')(getSourceMap(search(config.libName)))

+ 26 - 0
src/tools.js

@@ -0,0 +1,26 @@
+const fs = require('fs')
+
+// 递归获取某个目录下所有文件路径
+const getAllFilePath = startPath => {
+  const pathArr = []
+
+  const loadFile = path => {
+    const files = fs.readdirSync(path)
+    files.forEach(item => {
+      let stat = fs.lstatSync(`${path}${item}`)
+      if (stat.isDirectory()) { 
+        loadFile(`${path}${item}/`)
+      } else {
+        pathArr.push(`${path}${item}`)
+      }
+    })
+  }
+
+  loadFile(startPath)
+
+  return pathArr
+}
+
+module.exports = {
+  getAllFilePath
+}