Browse Source

feat: 根据config.json自动生成taroConfig.ts (#1181)

* fix: countdown 组件修改 warning

* feat: 自动创建 taro 文件脚本

* feat: 自动更新 Taro
yangxiaolu1993 3 years ago
parent
commit
90f7cb41af

+ 47 - 0
jd/generate-taro-route.js

@@ -0,0 +1,47 @@
+const fse = require('fs-extra');
+const config = require('../src/config.json');
+const targetBaseUrl = `${process.cwd()}/src`;
+const taroConfig = `${targetBaseUrl}/sites/mobile-taro/vue/src/app.config.ts`;
+
+// 创建 config
+const createConfig = async () => {
+  let configRef = [];
+
+  return new Promise((res, rej) => {
+    config.nav.map((item) => {
+      let co = {
+        root: item.enName,
+        pages: []
+      };
+
+      item.packages.map((it) => {
+        if (!(it.exportEmpty == false) && it.show) {
+          co.pages.push(`pages/${it.name.toLowerCase()}/index`);
+        }
+      });
+
+      configRef.push(co);
+    });
+
+    res(configRef);
+  });
+};
+
+const create = async () => {
+  const configTemplate = {
+    pages: ['pages/index/index'],
+    subpackages: '',
+    window: {
+      backgroundTextStyle: 'light',
+      navigationBarBackgroundColor: '#fff',
+      navigationBarTitleText: 'NutUI',
+      navigationBarTextStyle: 'black'
+    }
+  };
+
+  configTemplate.subpackages = await createConfig();
+
+  fse.writeFileSync(taroConfig, `export default ${JSON.stringify(configTemplate)}`, 'utf8');
+};
+
+create();

+ 3 - 2
package.json

@@ -36,7 +36,7 @@
     "checked": "npm run generate:file && tsc",
     "checked:taro:vue": "npm run generate:file:taro:vue",
     "dev": "npm run checked && vite --open --force",
-    "dev:taro:vue": "npm run checked:taro:vue && cd src/sites/mobile-taro/vue/ && npm run dev:weapp",
+    "dev:taro:vue": "npm run createTaroConfig && npm run checked:taro:vue && cd src/sites/mobile-taro/vue/ && npm run dev:weapp",
     "dev:taro:h5": "npm run checked:taro:vue && cd src/sites/mobile-taro/vue/ && npm run dev:h5",
     "build:site": "npm run checked && vite build",
     "build:site:oss": "npm run checked && vite build --base=/nutui/3x/",
@@ -55,7 +55,8 @@
     "test": "jest",
     "release": "standard-version -a",
     "codeformat": "prettier --write .",
-    "copydocs": "node ./jd/copymd.js"
+    "copydocs": "node ./jd/copymd.js",
+    "createTaroConfig": "node ./jd/generate-taro-route.js"
   },
   "standard-version": {
     "scripts": {

+ 6 - 0
src/config.json

@@ -750,6 +750,8 @@
           "desc": "音频播放器",
           "sort": 25,
           "show": true,
+          "exportEmpty":false,
+          "exportEmptyTaro":false,
           "author": "yangxiaolu"
         },
         {
@@ -760,6 +762,8 @@
           "desc": "音频操作按钮",
           "sort": 26,
           "show": false,
+          "exportEmpty":false,
+          "exportEmptyTaro":false,
           "author": "yangxiaolu"
         }
 
@@ -834,6 +838,8 @@
           "taro": false,
           "show": true,
           "tarodoc": true,
+          "exportEmpty":false,
+          "exportEmptyTaro":false,
           "author": "zy19940510"
         },
 

+ 1 - 1
src/packages/__VUE/countdown/index.taro.vue

@@ -71,7 +71,7 @@ export default create({
     }
   },
   components: {},
-  emits: ['input', 'on-end', 'on-restart', 'on-paused'],
+  emits: ['input', 'on-end', 'on-restart', 'on-paused', 'update:modelValue'],
 
   setup(props, { emit, slots }) {
     // console.log('componentName', componentName);

+ 90 - 95
src/sites/mobile-taro/vue/src/app.config.ts

@@ -1,100 +1,95 @@
-let subpackages = [
-  {
-    root: 'layout',
-    pages: ['pages/layout/index', 'pages/divider/index', 'pages/sticky/index', 'pages/grid/index']
-  },
-  {
-    root: 'feedback',
-    pages: [
-      'pages/swipe/index',
-      'pages/backtop/index',
-      'pages/actionsheet/index',
-      'pages/dialog/index',
-      'pages/toast/index',
-      'pages/notify/index',
-      'pages/switch/index',
-      'pages/drag/index',
-      'pages/infiniteloading/index'
-    ]
-  },
-  {
-    root: 'base',
-    pages: ['pages/cell/index', 'pages/icon/index', 'pages/button/index', 'pages/overlay/index', 'pages/popup/index']
-  },
-  {
-    root: 'nav',
-    pages: [
-      'pages/navbar/index',
-      'pages/tabbar/index',
-      'pages/tabs/index',
-      'pages/fixednav/index',
-      'pages/elevator/index',
-      'pages/menu/index',
-      'pages/pagination/index',
-      'pages/indicator/index',
-      'pages/sidenavbar/index'
-    ]
-  },
-  {
-    root: 'dentry',
-    pages: [
-      'pages/range/index',
-      'pages/inputnumber/index',
-      'pages/checkbox/index',
-      'pages/input/index',
-      'pages/uploader/index',
-      'pages/rate/index',
-      'pages/radio/index',
-      'pages/calendar/index',
-      'pages/form/index',
-      'pages/shortpassword/index',
-      'pages/picker/index',
-      'pages/datepicker/index',
-      'pages/textarea/index',
-      'pages/numberkeyboard/index',
-      'pages/cascader/index',
-      'pages/oldpicker/index',
-      'pages/searchbar/index'
-    ]
-  },
-  {
-    root: 'exhibition',
-    pages: [
-      'pages/avatar/index',
-      'pages/price/index',
-      'pages/imagepreview/index',
-      'pages/collapse/index',
-      'pages/empty/index',
-      'pages/noticebar/index',
-      'pages/steps/index',
-      'pages/progress/index',
-      'pages/circleprogress/index',
-      'pages/list/index',
-      'pages/countdown/index',
-      'pages/countup/index',
-      'pages/badge/index',
-      'pages/tag/index',
-      'pages/popover/index',
-      'pages/skeleton/index',
-      'pages/table/index',
-      'pages/swiper/index'
-    ]
-  },
-  {
-    root: 'business',
-    pages: [
-      'pages/address/index',
-      'pages/signature/index',
-      'pages/barrage/index',
-      'pages/timeselect/index',
-      'pages/sku/index',
-      'pages/card/index'
-    ]
-  }
-];
 export default {
   pages: ['pages/index/index'],
-  subpackages,
+  subpackages: [
+    {
+      root: 'base',
+      pages: ['pages/button/index', 'pages/cell/index', 'pages/icon/index', 'pages/overlay/index', 'pages/popup/index']
+    },
+    { root: 'layout', pages: ['pages/layout/index', 'pages/sticky/index', 'pages/divider/index', 'pages/grid/index'] },
+    {
+      root: 'nav',
+      pages: [
+        'pages/navbar/index',
+        'pages/fixednav/index',
+        'pages/menu/index',
+        'pages/tabbar/index',
+        'pages/elevator/index',
+        'pages/pagination/index',
+        'pages/tabs/index',
+        'pages/indicator/index',
+        'pages/sidenavbar/index'
+      ]
+    },
+    {
+      root: 'dentry',
+      pages: [
+        'pages/range/index',
+        'pages/searchbar/index',
+        'pages/cascader/index',
+        'pages/calendar/index',
+        'pages/checkbox/index',
+        'pages/datepicker/index',
+        'pages/inputnumber/index',
+        'pages/input/index',
+        'pages/radio/index',
+        'pages/rate/index',
+        'pages/picker/index',
+        'pages/shortpassword/index',
+        'pages/textarea/index',
+        'pages/uploader/index',
+        'pages/numberkeyboard/index',
+        'pages/form/index'
+      ]
+    },
+    {
+      root: 'feedback',
+      pages: [
+        'pages/swipe/index',
+        'pages/actionsheet/index',
+        'pages/backtop/index',
+        'pages/drag/index',
+        'pages/dialog/index',
+        'pages/infiniteloading/index',
+        'pages/notify/index',
+        'pages/switch/index',
+        'pages/toast/index'
+      ]
+    },
+    {
+      root: 'exhibition',
+      pages: [
+        'pages/list/index',
+        'pages/progress/index',
+        'pages/circleprogress/index',
+        'pages/noticebar/index',
+        'pages/empty/index',
+        'pages/steps/index',
+        'pages/swiper/index',
+        'pages/avatar/index',
+        'pages/price/index',
+        'pages/imagepreview/index',
+        'pages/countup/index',
+        'pages/countdown/index',
+        'pages/badge/index',
+        'pages/tag/index',
+        'pages/popover/index',
+        'pages/skeleton/index',
+        'pages/collapse/index',
+        'pages/table/index'
+      ]
+    },
+    {
+      root: 'business',
+      pages: [
+        'pages/address/index',
+        'pages/barrage/index',
+        'pages/signature/index',
+        'pages/timeselect/index',
+        'pages/sku/index',
+        'pages/card/index'
+      ]
+    }
+  ],
   window: {
     backgroundTextStyle: 'light',
     navigationBarBackgroundColor: '#fff',

+ 1 - 1
src/sites/mobile-taro/vue/src/pages/index/index.vue

@@ -16,7 +16,7 @@
         <li>{{ _nav.name }}</li>
         <ul>
           <template v-for="_package in reorder(_nav.packages)" :key="_package">
-            <li v-if="_package.show">
+            <li v-if="_package.show && _package.exportEmpty !== false">
               <a @click="navigateTo(_package.name.toLowerCase(), _nav.enName)">
                 {{ _package.name }}
                 &nbsp;&nbsp;