正在显示
1 个修改的文件
包含
36 行增加
和
1 行删除
| @@ -2,6 +2,34 @@ const { readdirSync, readFileSync, writeFileSync, existsSync } = require('fs'); | @@ -2,6 +2,34 @@ const { readdirSync, readFileSync, writeFileSync, existsSync } = require('fs'); | ||
| 2 | const { join, basename } = require('path'); | 2 | const { join, basename } = require('path'); |
| 3 | const mkdirp = require('mkdirp'); | 3 | const mkdirp = require('mkdirp'); |
| 4 | 4 | ||
| 5 | +function haveDependencies(pkg, depName) { | ||
| 6 | + if (pkg.dependencies && pkg.dependencies[depName]) { | ||
| 7 | + return true; | ||
| 8 | + } | ||
| 9 | + if (pkg.devDependencies && pkg.devDependencies[depName]) { | ||
| 10 | + return true; | ||
| 11 | + } | ||
| 12 | + return false; | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +const EXT_NAMES = ['.tsx', '.ts', '.jsx', '.js']; | ||
| 16 | + | ||
| 17 | +function getFile(cwd, fileName) { | ||
| 18 | + for (const ext of EXT_NAMES) { | ||
| 19 | + const file = join(cwd, `${fileName}${ext}`); | ||
| 20 | + if (existsSync(file)) { | ||
| 21 | + return file; | ||
| 22 | + } | ||
| 23 | + } | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +function haveImport(cwd, name) { | ||
| 27 | + const indexFile = getFile(cwd, 'src/index'); | ||
| 28 | + if (!indexFile) return false; | ||
| 29 | + const content = readFileSync(indexFile, 'utf-8'); | ||
| 30 | + return content.includes(`'${name}'`) || content.includes(`"${name}"`); | ||
| 31 | +} | ||
| 32 | + | ||
| 5 | function parseJSON(root) { | 33 | function parseJSON(root) { |
| 6 | const dirs = readdirSync(root); | 34 | const dirs = readdirSync(root); |
| 7 | const type = basename(root); | 35 | const type = basename(root); |
| @@ -11,6 +39,13 @@ function parseJSON(root) { | @@ -11,6 +39,13 @@ function parseJSON(root) { | ||
| 11 | const pkg = require(join(absDirPath, 'package.json')); | 39 | const pkg = require(join(absDirPath, 'package.json')); |
| 12 | const url = `https://github.com/umijs/umi-blocks/tree/master/${type}/${dir}`; | 40 | const url = `https://github.com/umijs/umi-blocks/tree/master/${type}/${dir}`; |
| 13 | const img = `https://github.com/umijs/umi-blocks/blob/master/${type}/${dir}/snapshot.png?raw=true`; | 41 | const img = `https://github.com/umijs/umi-blocks/blob/master/${type}/${dir}/snapshot.png?raw=true`; |
| 42 | + const features = []; | ||
| 43 | + if (haveDependencies(pkg, 'antd') || haveImport(absDirPath, 'antd')) { | ||
| 44 | + features.push('antd'); | ||
| 45 | + } | ||
| 46 | + if (getFile(absDirPath, 'src/model')) { | ||
| 47 | + features.push('dva'); | ||
| 48 | + } | ||
| 14 | memo.push({ | 49 | memo.push({ |
| 15 | name: pkg.name, | 50 | name: pkg.name, |
| 16 | description: pkg.description, | 51 | description: pkg.description, |
| @@ -18,7 +53,7 @@ function parseJSON(root) { | @@ -18,7 +53,7 @@ function parseJSON(root) { | ||
| 18 | tags: [], | 53 | tags: [], |
| 19 | img, | 54 | img, |
| 20 | previewUrl: '', | 55 | previewUrl: '', |
| 21 | - features: [], | 56 | + features, |
| 22 | }); | 57 | }); |
| 23 | return memo; | 58 | return memo; |
| 24 | }, []); | 59 | }, []); |
请
注册
或
登录
后发表评论