Skip to content

Commit

Permalink
feat: Add options to command line
Browse files Browse the repository at this point in the history
  • Loading branch information
fwh1990 committed Apr 23, 2020
1 parent 2a82019 commit 102a7a0
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 47 deletions.
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -38,6 +38,9 @@ npm install mini-program-iconfont-cli --save-dev
生成配置文件
```bash
npx iconfont-init

# 可传入配置输出路径
# npx iconfont-init --output iconfont.json
```
此时项目根目录会生成一个`iconfont.json`的文件,内容如下:
```json
Expand Down Expand Up @@ -72,6 +75,9 @@ npx iconfont-init
# Step 3
开始生成小程序标准组件
```bash
# 可传入配置文件路径
# npx iconfont-XXXX --config iconfont.json

# 微信小程序
npx iconfont-wechat

Expand Down
6 changes: 3 additions & 3 deletions package.json
Expand Up @@ -30,7 +30,7 @@
"colors": "^1.3.3",
"fs-extra": "^8.1.0",
"glob": "^7.1.4",
"minimist": "^1.2.0",
"minimist": "^1.2.5",
"mkdirp": "^0.5.1",
"tslib": "^1.10.0",
"xml2js": "^0.4.19"
Expand All @@ -42,7 +42,7 @@
"@types/mkdirp": "^0.5.2",
"@types/node": "^12.7.2",
"@types/xml2js": "^0.4.4",
"ts-node": "^8.3.0",
"typescript": "^3.5.3"
"ts-node": "^8.9.0",
"typescript": "^3.8.3"
}
}
19 changes: 5 additions & 14 deletions scripts/update-snapshot.sh
@@ -1,16 +1,7 @@
#!/usr/bin/env bash

cp -f ./scripts/config/wechat.json ./iconfont.json
ts-node src/commands/createWechatIcon.ts

cp -f ./scripts/config/alipay.json ./iconfont.json
ts-node src/commands/createAlipayIcon.ts

cp -f ./scripts/config/baidu.json ./iconfont.json
ts-node src/commands/createBaiduIcon.ts

cp -f ./scripts/config/toutiao.json ./iconfont.json
ts-node src/commands/createToutiaoIcon.ts

cp -f ./scripts/config/qq.json ./iconfont.json
ts-node src/commands/createQqIcon.ts
npx ts-node src/commands/createQqIcon.ts --config ./scripts/config/qq.json
npx ts-node src/commands/createToutiaoIcon.ts --config ./scripts/config/toutiao.json
npx ts-node src/commands/createBaiduIcon.ts --config ./scripts/config/baidu.json
npx ts-node src/commands/createAlipayIcon.ts --config ./scripts/config/alipay.json
npx ts-node src/commands/createWechatIcon.ts --config ./scripts/config/wechat.json
19 changes: 16 additions & 3 deletions src/commands/createJson.ts
Expand Up @@ -4,13 +4,26 @@ import path from 'path';
import fs from 'fs';
import fse from 'fs-extra';
import colors from 'colors';
import minimist from 'minimist';

const targetFile = path.resolve('iconfont.json');
const args = minimist<{ output: string }>(process.argv.slice(2));

let outputPath = 'iconfont.json';

if (args.output && typeof args.output === 'string') {
outputPath = args.output;

if (outputPath.split('.').pop() !== 'json') {
outputPath += '.json';
}
}

const targetFile = path.resolve(outputPath);

if (fs.existsSync(targetFile)) {
console.error(colors.red('File "iconfont.json" was created before.'));
console.error(colors.red(`File "${outputPath}" was created before.`));
} else {
// fs.copyFileSync only can be used above node v8.5.0+
fse.copySync(path.join(__dirname, '../libs/iconfont.json'), targetFile);
console.log(colors.green('File "iconfont.json" is created now. We recommend you add it to version control.'));
console.log(colors.green(`File "${outputPath}" is created now. We recommend you add it to version control.`));
}
12 changes: 6 additions & 6 deletions src/commands/help.ts
Expand Up @@ -6,11 +6,11 @@ console.log([
'',
'Usage:',
'',
' ' + colors.green('npx iconfont-init') + ' : generate config file',
' ' + colors.green('npx iconfont-wechat') + ' : generate wechat icon component',
' ' + colors.green('npx iconfont-alipay') + ' : generate alipay icon component',
' ' + colors.green('npx iconfont-baidu') + ' : generate baidu icon component',
' ' + colors.green('npx iconfont-toutiao') + ' : generate toutiao icon component',
' ' + colors.green('npx iconfont-qq') + ' : generate qq icon component',
' ' + colors.green.bold('npx iconfont-init [--output]') + ' : Generate configuration file, default file name is iconfont.json',
' ' + colors.green.bold('npx iconfont-wechat [--config]') + ' : Generate wechat icon component',
' ' + colors.green.bold('npx iconfont-alipay [--config]') + ' : Generate alipay icon component',
' ' + colors.green.bold('npx iconfont-baidu [--config]') + ' : Generate baidu icon component',
' ' + colors.green.bold('npx iconfont-toutiao [--config]') + ' : Generate toutiao icon component',
' ' + colors.green.bold('npx iconfont-qq [--config]') + ' : Generate qq icon component',
'',
].join('\n'));
13 changes: 11 additions & 2 deletions src/libs/getConfig.ts
Expand Up @@ -2,6 +2,7 @@ import path from 'path';
import fs from 'fs';
import colors from 'colors';
import defaultConfig from './iconfont.json';
import minimist from 'minimist';

export interface Config {
symbol_url: string;
Expand All @@ -18,10 +19,18 @@ export const getConfig = () => {
return cacheConfig;
}

const targetFile = path.resolve('iconfont.json');

const args = minimist<{ config: string }>(process.argv.slice(2));
let configFilePath = 'iconfont.json';

if (args.config && typeof args.config === 'string') {
configFilePath = args.config;
}

const targetFile = path.resolve(configFilePath);

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

Expand Down
38 changes: 19 additions & 19 deletions yarn.lock
Expand Up @@ -185,10 +185,10 @@ minimist@0.0.8:
resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=

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

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

source-map-support@^0.5.6:
version "0.5.13"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
source-map-support@^0.5.17:
version "0.5.18"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz#f5f33489e270bd7f7d7e7b8debf283f3a4066960"
integrity sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
Expand All @@ -232,26 +232,26 @@ source-map@^0.6.0:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==

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

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

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

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

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

0 comments on commit 102a7a0

Please sign in to comment.