UNPKG

2.45 kBJavaScriptView Raw
1/**
2 * Created by Rodey on 2016/8/25.
3 * 为 gupack 创建别名
4 * gupack alias gp
5 *
6 * 之后可以使用 gp命令 代替 gupack命令
7 */
8'use strict';
9
10const T = require('../lib/tools'),
11 exec = require('child_process').exec,
12 prompt = require('prompt');
13// 提示
14prompt.message = '提示';
15
16function 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 * @param name 别名名称
35 * @param path 命令文件路径(存在于npm -g 目录)
36 * @private
37 */
38function _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
51function _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 * @param name 别名
65 * @param path 路径
66 */
67function 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
80function _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
92module.exports = alias;