Skip to content

Commit 102a7a0

Browse files
committed
feat: Add options to command line
1 parent 2a82019 commit 102a7a0

File tree

7 files changed

+66
-47
lines changed

7 files changed

+66
-47
lines changed

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ npm install mini-program-iconfont-cli --save-dev
3838
生成配置文件
3939
```bash
4040
npx iconfont-init
41+
42+
# 可传入配置输出路径
43+
# npx iconfont-init --output iconfont.json
4144
```
4245
此时项目根目录会生成一个`iconfont.json`的文件,内容如下:
4346
```json
@@ -72,6 +75,9 @@ npx iconfont-init
7275
# Step 3
7376
开始生成小程序标准组件
7477
```bash
78+
# 可传入配置文件路径
79+
# npx iconfont-XXXX --config iconfont.json
80+
7581
# 微信小程序
7682
npx iconfont-wechat
7783

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"colors": "^1.3.3",
3131
"fs-extra": "^8.1.0",
3232
"glob": "^7.1.4",
33-
"minimist": "^1.2.0",
33+
"minimist": "^1.2.5",
3434
"mkdirp": "^0.5.1",
3535
"tslib": "^1.10.0",
3636
"xml2js": "^0.4.19"
@@ -42,7 +42,7 @@
4242
"@types/mkdirp": "^0.5.2",
4343
"@types/node": "^12.7.2",
4444
"@types/xml2js": "^0.4.4",
45-
"ts-node": "^8.3.0",
46-
"typescript": "^3.5.3"
45+
"ts-node": "^8.9.0",
46+
"typescript": "^3.8.3"
4747
}
4848
}

scripts/update-snapshot.sh

+5-14
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
#!/usr/bin/env bash
22

3-
cp -f ./scripts/config/wechat.json ./iconfont.json
4-
ts-node src/commands/createWechatIcon.ts
5-
6-
cp -f ./scripts/config/alipay.json ./iconfont.json
7-
ts-node src/commands/createAlipayIcon.ts
8-
9-
cp -f ./scripts/config/baidu.json ./iconfont.json
10-
ts-node src/commands/createBaiduIcon.ts
11-
12-
cp -f ./scripts/config/toutiao.json ./iconfont.json
13-
ts-node src/commands/createToutiaoIcon.ts
14-
15-
cp -f ./scripts/config/qq.json ./iconfont.json
16-
ts-node src/commands/createQqIcon.ts
3+
npx ts-node src/commands/createQqIcon.ts --config ./scripts/config/qq.json
4+
npx ts-node src/commands/createToutiaoIcon.ts --config ./scripts/config/toutiao.json
5+
npx ts-node src/commands/createBaiduIcon.ts --config ./scripts/config/baidu.json
6+
npx ts-node src/commands/createAlipayIcon.ts --config ./scripts/config/alipay.json
7+
npx ts-node src/commands/createWechatIcon.ts --config ./scripts/config/wechat.json

src/commands/createJson.ts

+16-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,26 @@ import path from 'path';
44
import fs from 'fs';
55
import fse from 'fs-extra';
66
import colors from 'colors';
7+
import minimist from 'minimist';
78

8-
const targetFile = path.resolve('iconfont.json');
9+
const args = minimist<{ output: string }>(process.argv.slice(2));
10+
11+
let outputPath = 'iconfont.json';
12+
13+
if (args.output && typeof args.output === 'string') {
14+
outputPath = args.output;
15+
16+
if (outputPath.split('.').pop() !== 'json') {
17+
outputPath += '.json';
18+
}
19+
}
20+
21+
const targetFile = path.resolve(outputPath);
922

1023
if (fs.existsSync(targetFile)) {
11-
console.error(colors.red('File "iconfont.json" was created before.'));
24+
console.error(colors.red(`File "${outputPath}" was created before.`));
1225
} else {
1326
// fs.copyFileSync only can be used above node v8.5.0+
1427
fse.copySync(path.join(__dirname, '../libs/iconfont.json'), targetFile);
15-
console.log(colors.green('File "iconfont.json" is created now. We recommend you add it to version control.'));
28+
console.log(colors.green(`File "${outputPath}" is created now. We recommend you add it to version control.`));
1629
}

src/commands/help.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ console.log([
66
'',
77
'Usage:',
88
'',
9-
' ' + colors.green('npx iconfont-init') + ' : generate config file',
10-
' ' + colors.green('npx iconfont-wechat') + ' : generate wechat icon component',
11-
' ' + colors.green('npx iconfont-alipay') + ' : generate alipay icon component',
12-
' ' + colors.green('npx iconfont-baidu') + ' : generate baidu icon component',
13-
' ' + colors.green('npx iconfont-toutiao') + ' : generate toutiao icon component',
14-
' ' + colors.green('npx iconfont-qq') + ' : generate qq icon component',
9+
' ' + colors.green.bold('npx iconfont-init [--output]') + ' : Generate configuration file, default file name is iconfont.json',
10+
' ' + colors.green.bold('npx iconfont-wechat [--config]') + ' : Generate wechat icon component',
11+
' ' + colors.green.bold('npx iconfont-alipay [--config]') + ' : Generate alipay icon component',
12+
' ' + colors.green.bold('npx iconfont-baidu [--config]') + ' : Generate baidu icon component',
13+
' ' + colors.green.bold('npx iconfont-toutiao [--config]') + ' : Generate toutiao icon component',
14+
' ' + colors.green.bold('npx iconfont-qq [--config]') + ' : Generate qq icon component',
1515
'',
1616
].join('\n'));

src/libs/getConfig.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import path from 'path';
22
import fs from 'fs';
33
import colors from 'colors';
44
import defaultConfig from './iconfont.json';
5+
import minimist from 'minimist';
56

67
export interface Config {
78
symbol_url: string;
@@ -18,10 +19,18 @@ export const getConfig = () => {
1819
return cacheConfig;
1920
}
2021

21-
const targetFile = path.resolve('iconfont.json');
22+
23+
const args = minimist<{ config: string }>(process.argv.slice(2));
24+
let configFilePath = 'iconfont.json';
25+
26+
if (args.config && typeof args.config === 'string') {
27+
configFilePath = args.config;
28+
}
29+
30+
const targetFile = path.resolve(configFilePath);
2231

2332
if (!fs.existsSync(targetFile)) {
24-
console.warn(colors.red('File "iconfont.json" doesn\'t exist, did you forget to generate it?'));
33+
console.warn(colors.red(`File "${configFilePath}" doesn't exist, did you forget to generate it?`));
2534
process.exit(1);
2635
}
2736

yarn.lock

+19-19
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,10 @@ [email protected]:
185185
resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
186186
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
187187

188-
minimist@^1.2.0:
189-
version "1.2.0"
190-
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
191-
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
188+
minimist@^1.2.5:
189+
version "1.2.5"
190+
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
191+
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
192192

193193
mkdirp@^0.5.1:
194194
version "0.5.1"
@@ -219,10 +219,10 @@ sax@>=0.6.0:
219219
resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
220220
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
221221

222-
source-map-support@^0.5.6:
223-
version "0.5.13"
224-
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
225-
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
222+
source-map-support@^0.5.17:
223+
version "0.5.18"
224+
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz#f5f33489e270bd7f7d7e7b8debf283f3a4066960"
225+
integrity sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==
226226
dependencies:
227227
buffer-from "^1.0.0"
228228
source-map "^0.6.0"
@@ -232,26 +232,26 @@ source-map@^0.6.0:
232232
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
233233
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
234234

235-
ts-node@^8.3.0:
236-
version "8.3.0"
237-
resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57"
238-
integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==
235+
ts-node@^8.9.0:
236+
version "8.9.0"
237+
resolved "https://registry.npmjs.org/ts-node/-/ts-node-8.9.0.tgz#d7bf7272dcbecd3a2aa18bd0b96c7d2f270c15d4"
238+
integrity sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==
239239
dependencies:
240240
arg "^4.1.0"
241241
diff "^4.0.1"
242242
make-error "^1.1.1"
243-
source-map-support "^0.5.6"
244-
yn "^3.0.0"
243+
source-map-support "^0.5.17"
244+
yn "3.1.1"
245245

246246
tslib@^1.10.0:
247247
version "1.10.0"
248248
resolved "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
249249
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
250250

251-
typescript@^3.5.3:
252-
version "3.6.2"
253-
resolved "https://registry.npmjs.org/typescript/-/typescript-3.6.2.tgz#105b0f1934119dde543ac8eb71af3a91009efe54"
254-
integrity sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==
251+
typescript@^3.8.3:
252+
version "3.8.3"
253+
resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
254+
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
255255

256256
universalify@^0.1.0:
257257
version "0.1.2"
@@ -276,7 +276,7 @@ xmlbuilder@~9.0.1:
276276
resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
277277
integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
278278

279-
yn@^3.0.0:
279+
yn@3.1.1:
280280
version "3.1.1"
281281
resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
282282
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==

0 commit comments

Comments
 (0)