Browse Source

优化部分bug
Signed-off-by: Caner <5658514@qq.com>

Caner 3 years ago
parent
commit
0df4591cbf
4 changed files with 58 additions and 30 deletions
  1. 1 1
      README.md
  2. 22 2
      config.js
  3. 35 27
      index.js
  4. BIN
      px2rem.exe

+ 1 - 1
README.md

@@ -15,6 +15,6 @@ naiveUI 组件库 px 转 rem 插件,默认单位100,即1rem=100px,config 可
 ```
 ```
 ## other
 ## other
 ```
 ```
-1. 修改config.js 添加需要转换的组件名称,支持N开头
+1. 修改config.js 添加需要转换的组件名称
 2. yarn build 即可打包成exe
 2. yarn build 即可打包成exe
 ```
 ```

+ 22 - 2
config.js

@@ -1,8 +1,28 @@
 module.exports = {
 module.exports = {
     components: [
     components: [
         'common',
         'common',
-        "NButton",
-        'Popselect'
+        'NTable',
+        'NButton',
+        'NInput',
+        'NInputNumber',
+        'NCheckbox',
+        'NCheckboxGroup',
+        'NDatePicker',
+        'NSelect',
+        'NTreeSelect',
+        'NForm',
+        'NFormItem',
+        'NSwitch',     
+        'NTree',
+        'NTable',
+        'NDataTable',
+        'NIcon',
+        'NMenu',
+        'NGrid',
+        'NGridItem',
+        'NPagination',
+        'NCollapse',
+        'NCollapseItem'        
     ],
     ],
     unit: 100
     unit: 100
 }
 }

+ 35 - 27
index.js

@@ -1,6 +1,6 @@
 const Puppeteer = require('puppeteer');
 const Puppeteer = require('puppeteer');
 const sleep = (ms) => { return new Promise((resolve) => { setTimeout(resolve, ms) }) };
 const sleep = (ms) => { return new Promise((resolve) => { setTimeout(resolve, ms) }) };
-const { components, unit} = require(process.cwd() + '/config.js');
+const { components, unit } = require(process.cwd() + '/config.js');
 const fs = require('fs');
 const fs = require('fs');
 // main
 // main
 (async () => {
 (async () => {
@@ -10,6 +10,7 @@ const fs = require('fs');
         const browser = await Puppeteer.launch({
         const browser = await Puppeteer.launch({
             headless: true,
             headless: true,
             timeout: 0,
             timeout: 0,
+            devtools: false,
             executablePath: process.cwd() + '/chrome/chrome.exe'
             executablePath: process.cwd() + '/chrome/chrome.exe'
         });
         });
         // 打开naive 官网
         // 打开naive 官网
@@ -26,35 +27,42 @@ const fs = require('fs');
         await sleep(1000)
         await sleep(1000)
         const objs = {}
         const objs = {}
         for (let zd = 0; zd < newArr.length; zd++) {
         for (let zd = 0; zd < newArr.length; zd++) {
-            const cname = newArr[zd]
-            const values = await new Promise(async (resolve, reject) => {
-                const input = await page.$('.n-popover__content>.n-space>div:nth-child(3) input');
-                await input.click({ clickCount: 2 }); // 双击清空
-                await input.type(cname, { delay: 100 });
-                await page.$$eval('.n-popover__content>.n-space', (divs) => divs[0].children[2].children[0].children[0].children[0].children[0].blur())
-                const keys = await page.$$eval('.n-collapse-item--left-arrow-placement', async (divs,unit) => {
-                    const obj = {}
-                    for (let k = 0; k < divs.length; k++) {
-                        const child = divs[k];
-                        child.children[0].children[0].click()
-                        await new Promise((resolve) => { setTimeout(resolve, 1000) })
-                        const list = child.children[1].children[0].children[0].children
-                        for (let j = 0; j < list.length; j++) {
-                            const es = list[j];
-                            const key = es.children[0].textContent
-                            const value = es.children[1].children[0].children[0].children[0].getAttribute('placeholder')
-                            if (value && value.includes('px')) {
-                                const arr = value.split(' ')
-                                const newValue = arr.map(el => el.includes('px') ? el = parseInt(el) / unit + 'rem' : el)
-                                obj[key] = newValue.join(' ')
+            const cname = newArr[zd];
+            const input = await page.$('.n-popover__content>.n-space>div:nth-child(3) input');
+            await input.click({ clickCount: 2 }); // 双击清空
+            await input.type(cname, { delay: 100 });
+            await page.keyboard.press('Enter');
+            const keys = await page.$$eval('.n-collapse-item--left-arrow-placement', async (divs, prams) => {
+                const obj = {}
+                for (let k = 0; k < divs.length; k++) {
+                    const child = divs[k];
+                    const clickDiv = child.children[0].children[0];
+                    const { unit, cname } = prams;
+                    try {
+                        if (cname === clickDiv.textContent) {
+                            clickDiv.click();
+                            await new Promise((resolve) => { setTimeout(resolve, 1000) });
+                            const list = child.children[1].children[0].children[0].children;
+                            for (let j = 0; j < list.length; j++) {
+                                const es = list[j];
+                                const key = es.children[0].textContent;
+                                const value = es.children[1].children[0].children[0].children[0].getAttribute('placeholder');
+                                if (value && value.includes('px')) {
+                                    const arr = value.split(' ');
+                                    const newValue = arr.map(el => el.includes('px') ? el = parseInt(el) / unit + 'rem' : el);
+                                    obj[key] = newValue.join(' ');
+                                }
                             }
                             }
+                            clickDiv.click();
                         }
                         }
+                    } catch (error) {
+                        continue
                     }
                     }
-                    return obj
-                },unit)
-                resolve(keys)
-            })
-            objs[cname] = values
+                }
+                return obj
+            }, { unit: unit, cname: cname })
+            if (!Object.keys(keys).length) continue
+            objs[cname] = keys;
         }
         }
         // 输出json 数据
         // 输出json 数据
         const jsonContent = JSON.stringify(objs);
         const jsonContent = JSON.stringify(objs);

BIN
px2rem.exe