1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | 'use strict';
|
9 |
|
10 | const T = require('../lib/tools'),
|
11 | exec = require('child_process').exec,
|
12 | prompt = require('prompt');
|
13 |
|
14 | prompt.message = '提示';
|
15 |
|
16 | function alias() {
|
17 | let aliasName = T.argv._[1],
|
18 | isRemove = T.argv['remove'],
|
19 | npmPath;
|
20 | if (!aliasName) {
|
21 | T.log.red('× 未指定别名');
|
22 | return false;
|
23 | }
|
24 |
|
25 | let npmRoot = exec('npm root -g');
|
26 | npmRoot.stdout.on('data', data => {
|
27 | npmPath = data;
|
28 | isRemove ? remove(aliasName, npmPath) : _alias(aliasName, npmPath);
|
29 | });
|
30 | }
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 | function _alias(name, path) {
|
39 | prompt.start();
|
40 | T.prompt('是否确认创建别名(别名有可能覆盖系统命令,请确保别名不与系统其它命令重复)? [yes/no]')
|
41 | .then(() => {
|
42 | console.log('\n\r');
|
43 | _copyFiles(name, path);
|
44 | })
|
45 | .catch(err => {
|
46 | T.log.red(`× ${err} `);
|
47 | prompt.stop();
|
48 | });
|
49 | }
|
50 |
|
51 | function _copyFiles(name, path) {
|
52 | try {
|
53 | T.fsa.copySync(T.Path.resolve(path, '../gupack'), T.Path.resolve(path, '../', name));
|
54 | T.fsa.copySync(T.Path.resolve(path, '../gupack.cmd'), T.Path.resolve(path, '../', name + '.cmd'));
|
55 | T.log.green(`√ 创建别名成功,您可以使用${name}命令了!`);
|
56 | } catch (e) {
|
57 | T.log.red(`× ${e.message}`);
|
58 | }
|
59 | prompt.stop();
|
60 | }
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 | function remove(name, path) {
|
68 | prompt.start();
|
69 | T.prompt('是否确认删除别名? [yes/no]')
|
70 | .then(() => {
|
71 | console.log('\n\r');
|
72 | _remove(name, path);
|
73 | })
|
74 | .catch(err => {
|
75 | T.log.red(`× ${err} `);
|
76 | prompt.stop();
|
77 | });
|
78 | }
|
79 |
|
80 | function _remove(name, path) {
|
81 | try {
|
82 | T.fsa.removeSync(T.Path.resolve(path, '../', name));
|
83 | T.fsa.removeSync(T.Path.resolve(path, '../', name + '.cmd'));
|
84 |
|
85 | T.log.green('√ 删除成功!');
|
86 | } catch (e) {
|
87 | T.log.red(`× ${e.message}`);
|
88 | }
|
89 | prompt.stop();
|
90 | }
|
91 |
|
92 | module.exports = alias;
|