UNPKG

2.29 kBJavaScriptView Raw
1#!/usr/bin/env node
2/**
3 * 文件说明:
4 * ----------------------------------------
5 * 创建用户: leo
6 * 创建日期 2019/5/29
7 */
8
9'use strict'
10
11process.on('unhandledRejection', (err) => {
12 throw err
13})
14
15const {existsSync} = require('fs')
16const {join} = require('path')
17const yParser = require('yargs-parser')
18const chalk = require('chalk')
19const signale = require('signale')
20const updater = require('update-notifier')
21const spawn = require('cross-spawn')
22const pkg = require('../package.json')
23const start = require('../scripts/start')
24const build = require('../scripts/build')
25const publish = require('../scripts/publish')
26
27const args = yParser(process.argv.slice(2))
28if (args.v || args.version) {
29 console.log(pkg.version)
30 if (existsSync(join(__dirname, '../.local'))) {
31 console.log(chalk.cyan('@local'))
32 }
33 process.exit(0)
34}
35
36updater({pkg}).notify({defer: true})
37
38async function run() {
39 const cwd = process.cwd()
40 const lernaPath = join(__dirname, '../node_modules/.bin/lerna')
41
42 switch (args._[0]) {
43 case 'dev':
44 start({
45 cwd,
46 watch: true,
47 })
48 break
49 case 'build':
50 build({
51 cwd,
52 watch: false,
53 })
54 break
55 case 'publish':
56 publish({
57 cwd,
58 }).catch((err) => {
59 signale.error(err)
60 process.exit(1)
61 })
62 break
63 case 'lerna':
64 spawn.sync(lernaPath, process.argv.slice(3), {
65 stdio: 'inherit',
66 cwd,
67 })
68
69 break
70 case 'h':
71 case undefined:
72 printHelp()
73 break
74 default:
75 console.error(chalk.red(`Unsupported command ${args._[0]}`))
76 process.exit(1)
77 }
78}
79
80function printHelp() {
81 console.log(`
82 Usage: hz-lib <command> [options]
83
84 Commands:
85 ${chalk.green('dev')} dev library
86 ${chalk.green('build')} build library
87 ${chalk.green('publish')} publish library
88 ${chalk.green('lerna command')} leran command
89 `)
90}
91
92run().catch((err) => {
93 signale.error(err)
94 process.exit(1)
95})