@pisell/common 1.0.57 → 1.0.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.fatherrc.ts +7 -7
- package/CHANGELOG.md +15 -0
- package/README.md +2 -2
- package/es/index.d.ts +2 -2
- package/es/script/aws/index.js +18 -18
- package/es/script/constants/index.js +7 -1
- package/es/script/package.json +4 -4
- package/es/script/release/index.js +8 -8
- package/es/script/release/release.js +20 -20
- package/es/script/uploadCode/index.js +42 -42
- package/es/script/uploadCode/uploadCode.js +45 -45
- package/es/script/utils/index.js +40 -38
- package/lib/index.d.ts +2 -2
- package/lib/script/constants/index.js +7 -1
- package/lib/script/package.json +4 -4
- package/lib/script/uploadCode/index.js +1 -0
- package/lib/script/uploadCode/uploadCode.js +1 -0
- package/package.json +2 -2
- package/src/bin/pisell.js +3 -3
- package/src/script/aws/index.js +138 -138
- package/src/script/constants/index.js +86 -80
- package/src/script/deploy.js +29 -29
- package/src/script/index.js +45 -45
- package/src/script/package.json +4 -4
- package/src/script/release/index.js +119 -119
- package/src/script/release/release.js +87 -87
- package/src/script/uploadCode/index.js +284 -283
- package/src/script/uploadCode/uploadCode.js +255 -254
- package/src/script/utils/index.js +331 -329
- package/tsconfig.json +14 -14
- package/tsdown.config.ts +93 -93
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
#!/usr/bin/env zx
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
|
-
import {
|
|
4
|
-
getCurrentProjectName,
|
|
5
|
-
getServerConfig,
|
|
6
|
-
versionSort,
|
|
7
|
-
} from '../utils/index.js';
|
|
8
|
-
import Release from './release.js';
|
|
9
|
-
|
|
10
|
-
const selectProject = () => {
|
|
11
|
-
return inquirer.prompt([
|
|
12
|
-
// {
|
|
13
|
-
// type: "list",
|
|
14
|
-
// message: "请选择项目",
|
|
15
|
-
// name: "project",
|
|
16
|
-
// choices: [
|
|
17
|
-
// {
|
|
18
|
-
// value: {
|
|
19
|
-
// fileName: "my_pisel_shop",
|
|
20
|
-
// path:"./",
|
|
21
|
-
// },
|
|
22
|
-
// name: "my_pisel_shop"
|
|
23
|
-
// },
|
|
24
|
-
// ],
|
|
25
|
-
// },
|
|
26
|
-
{
|
|
27
|
-
type: 'list',
|
|
28
|
-
message: '请选择发布环境',
|
|
29
|
-
name: 'env',
|
|
30
|
-
choices: ['release', 'pre', 'prod'],
|
|
31
|
-
},
|
|
32
|
-
]);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @Title: 选择器函数
|
|
37
|
-
* @Describe:
|
|
38
|
-
* @Author: Wzw
|
|
39
|
-
*/
|
|
40
|
-
const inquirerResult = (versionList) => {
|
|
41
|
-
return inquirer.prompt([
|
|
42
|
-
{
|
|
43
|
-
type: 'list',
|
|
44
|
-
message: '请选择发布版本号',
|
|
45
|
-
name: 'version',
|
|
46
|
-
default: versionList,
|
|
47
|
-
choices: versionList,
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
type: 'confirm',
|
|
51
|
-
message: '确认发布',
|
|
52
|
-
name: 'is_release',
|
|
53
|
-
default: true,
|
|
54
|
-
},
|
|
55
|
-
]);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
// 版本选择时过滤的文件夹
|
|
59
|
-
const ignoreName = ['master', '.git', 'pre-master'];
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @Title: 获取所选项目的版本号列表
|
|
63
|
-
* @Describe:
|
|
64
|
-
* @Author: Zsj
|
|
65
|
-
*/
|
|
66
|
-
const getVersionList = async ({ env, project }) => {
|
|
67
|
-
const config = await getServerConfig(project.fileName);
|
|
68
|
-
|
|
69
|
-
let host = config[env].host;
|
|
70
|
-
if (env === 'release') {
|
|
71
|
-
host = config.cn[env].host;
|
|
72
|
-
}
|
|
73
|
-
let projectName = project.fileName;
|
|
74
|
-
if (projectName === 'my_pisel_shop' && env === 'prod') {
|
|
75
|
-
projectName = 'mypisel_shop';
|
|
76
|
-
}
|
|
77
|
-
// 域名
|
|
78
|
-
const versionList = await fetch(
|
|
79
|
-
`http://${host}:3600/version?projectName=${projectName}`,
|
|
80
|
-
).then((res) => res.json());
|
|
81
|
-
|
|
82
|
-
return versionSort(versionList.filter((item) => !ignoreName.includes(item)));
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
async function init() {
|
|
86
|
-
/** 选择项目 */
|
|
87
|
-
let projectAndEnv = await selectProject();
|
|
88
|
-
|
|
89
|
-
/** 之前选择项目模式改为获取当前主项目 */
|
|
90
|
-
projectAndEnv.project = {
|
|
91
|
-
path: './',
|
|
92
|
-
fileName: getCurrentProjectName(),
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/** 通过项目和环境查询对应版本号 */
|
|
96
|
-
const versionList = await getVersionList(projectAndEnv);
|
|
97
|
-
|
|
98
|
-
const res = await inquirerResult(versionList);
|
|
99
|
-
|
|
100
|
-
const releaseInstance = new Release({ ...res, ...projectAndEnv });
|
|
101
|
-
|
|
102
|
-
try {
|
|
103
|
-
/** 设置连接服务器配置 */
|
|
104
|
-
await releaseInstance.setConfig();
|
|
105
|
-
|
|
106
|
-
/** 连接服务器 */
|
|
107
|
-
await releaseInstance.connectServer();
|
|
108
|
-
|
|
109
|
-
/** 发布 */
|
|
110
|
-
await releaseInstance.release();
|
|
111
|
-
|
|
112
|
-
/** 断开 */
|
|
113
|
-
await releaseInstance.disconnectServer();
|
|
114
|
-
} catch (error) {
|
|
115
|
-
console.log(error);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export default init;
|
|
1
|
+
#!/usr/bin/env zx
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import {
|
|
4
|
+
getCurrentProjectName,
|
|
5
|
+
getServerConfig,
|
|
6
|
+
versionSort,
|
|
7
|
+
} from '../utils/index.js';
|
|
8
|
+
import Release from './release.js';
|
|
9
|
+
|
|
10
|
+
const selectProject = () => {
|
|
11
|
+
return inquirer.prompt([
|
|
12
|
+
// {
|
|
13
|
+
// type: "list",
|
|
14
|
+
// message: "请选择项目",
|
|
15
|
+
// name: "project",
|
|
16
|
+
// choices: [
|
|
17
|
+
// {
|
|
18
|
+
// value: {
|
|
19
|
+
// fileName: "my_pisel_shop",
|
|
20
|
+
// path:"./",
|
|
21
|
+
// },
|
|
22
|
+
// name: "my_pisel_shop"
|
|
23
|
+
// },
|
|
24
|
+
// ],
|
|
25
|
+
// },
|
|
26
|
+
{
|
|
27
|
+
type: 'list',
|
|
28
|
+
message: '请选择发布环境',
|
|
29
|
+
name: 'env',
|
|
30
|
+
choices: ['release', 'pre', 'prod'],
|
|
31
|
+
},
|
|
32
|
+
]);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @Title: 选择器函数
|
|
37
|
+
* @Describe:
|
|
38
|
+
* @Author: Wzw
|
|
39
|
+
*/
|
|
40
|
+
const inquirerResult = (versionList) => {
|
|
41
|
+
return inquirer.prompt([
|
|
42
|
+
{
|
|
43
|
+
type: 'list',
|
|
44
|
+
message: '请选择发布版本号',
|
|
45
|
+
name: 'version',
|
|
46
|
+
default: versionList,
|
|
47
|
+
choices: versionList,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'confirm',
|
|
51
|
+
message: '确认发布',
|
|
52
|
+
name: 'is_release',
|
|
53
|
+
default: true,
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// 版本选择时过滤的文件夹
|
|
59
|
+
const ignoreName = ['master', '.git', 'pre-master'];
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @Title: 获取所选项目的版本号列表
|
|
63
|
+
* @Describe:
|
|
64
|
+
* @Author: Zsj
|
|
65
|
+
*/
|
|
66
|
+
const getVersionList = async ({ env, project }) => {
|
|
67
|
+
const config = await getServerConfig(project.fileName);
|
|
68
|
+
|
|
69
|
+
let host = config[env].host;
|
|
70
|
+
if (env === 'release') {
|
|
71
|
+
host = config.cn[env].host;
|
|
72
|
+
}
|
|
73
|
+
let projectName = project.fileName;
|
|
74
|
+
if (projectName === 'my_pisel_shop' && env === 'prod') {
|
|
75
|
+
projectName = 'mypisel_shop';
|
|
76
|
+
}
|
|
77
|
+
// 域名
|
|
78
|
+
const versionList = await fetch(
|
|
79
|
+
`http://${host}:3600/version?projectName=${projectName}`,
|
|
80
|
+
).then((res) => res.json());
|
|
81
|
+
|
|
82
|
+
return versionSort(versionList.filter((item) => !ignoreName.includes(item)));
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
async function init() {
|
|
86
|
+
/** 选择项目 */
|
|
87
|
+
let projectAndEnv = await selectProject();
|
|
88
|
+
|
|
89
|
+
/** 之前选择项目模式改为获取当前主项目 */
|
|
90
|
+
projectAndEnv.project = {
|
|
91
|
+
path: './',
|
|
92
|
+
fileName: getCurrentProjectName(),
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/** 通过项目和环境查询对应版本号 */
|
|
96
|
+
const versionList = await getVersionList(projectAndEnv);
|
|
97
|
+
|
|
98
|
+
const res = await inquirerResult(versionList);
|
|
99
|
+
|
|
100
|
+
const releaseInstance = new Release({ ...res, ...projectAndEnv });
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
/** 设置连接服务器配置 */
|
|
104
|
+
await releaseInstance.setConfig();
|
|
105
|
+
|
|
106
|
+
/** 连接服务器 */
|
|
107
|
+
await releaseInstance.connectServer();
|
|
108
|
+
|
|
109
|
+
/** 发布 */
|
|
110
|
+
await releaseInstance.release();
|
|
111
|
+
|
|
112
|
+
/** 断开 */
|
|
113
|
+
await releaseInstance.disconnectServer();
|
|
114
|
+
} catch (error) {
|
|
115
|
+
console.log(error);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export default init;
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import { isSsrMap, outPathMap } from '../constants/index.js';
|
|
2
|
-
import {
|
|
3
|
-
connectServer,
|
|
4
|
-
getServerConfig,
|
|
5
|
-
releaseProject,
|
|
6
|
-
} from '../utils/index.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @Title: 执行发布类
|
|
10
|
-
* @Describe:
|
|
11
|
-
* @Author: Zsj
|
|
12
|
-
*/
|
|
13
|
-
class Release {
|
|
14
|
-
constructor(props) {
|
|
15
|
-
const { project, env, version, conn } = props;
|
|
16
|
-
this.projectName = project.fileName;
|
|
17
|
-
this.env = env;
|
|
18
|
-
this.version = version;
|
|
19
|
-
|
|
20
|
-
this.conn = conn;
|
|
21
|
-
this.outPath = outPathMap[this.projectName][this.env];
|
|
22
|
-
// 是否是ssr项目
|
|
23
|
-
this.isSSR = isSsrMap[this.projectName];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @Title: 设置连接服务器配置
|
|
28
|
-
* @Describe:
|
|
29
|
-
* @Author: Zsj
|
|
30
|
-
*/
|
|
31
|
-
async setConfig() {
|
|
32
|
-
const serverConfigMap = await getServerConfig(this.projectName);
|
|
33
|
-
|
|
34
|
-
let serverConfig = serverConfigMap[this.env];
|
|
35
|
-
|
|
36
|
-
// 选择release默认用国内cn服务器
|
|
37
|
-
if (this.env === 'release') {
|
|
38
|
-
serverConfig = serverConfigMap.cn[this.env];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (this.env === 'prod') {
|
|
42
|
-
serverConfig = serverConfigMap.aws.service[this.env];
|
|
43
|
-
serverConfig.privateKey = fs.readFileSync("../../../pem/pisell-pro.pem");
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
this.serverConfig = serverConfig;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @Title: 连接服务器
|
|
51
|
-
* @Describe:
|
|
52
|
-
* @Author: Zsj
|
|
53
|
-
*/
|
|
54
|
-
async connectServer() {
|
|
55
|
-
if (!this.serverConfig) {
|
|
56
|
-
console.log('未找到发布配置!');
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
this.conn = await connectServer(this.serverConfig);
|
|
60
|
-
return this.conn;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @Title: 执行发布操作
|
|
65
|
-
* @Describe:
|
|
66
|
-
* @Author: Zsj
|
|
67
|
-
*/
|
|
68
|
-
async release() {
|
|
69
|
-
return await releaseProject(this.conn, {
|
|
70
|
-
path: this.outPath,
|
|
71
|
-
fileName: `${this.version}`,
|
|
72
|
-
isSSR: this.isSSR,
|
|
73
|
-
env: this.env,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* @Title: 断开服务连接
|
|
79
|
-
* @Describe:
|
|
80
|
-
* @Author: Zsj
|
|
81
|
-
*/
|
|
82
|
-
async disconnectServer() {
|
|
83
|
-
return await this.conn.end();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export default Release;
|
|
1
|
+
import { isSsrMap, outPathMap } from '../constants/index.js';
|
|
2
|
+
import {
|
|
3
|
+
connectServer,
|
|
4
|
+
getServerConfig,
|
|
5
|
+
releaseProject,
|
|
6
|
+
} from '../utils/index.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @Title: 执行发布类
|
|
10
|
+
* @Describe:
|
|
11
|
+
* @Author: Zsj
|
|
12
|
+
*/
|
|
13
|
+
class Release {
|
|
14
|
+
constructor(props) {
|
|
15
|
+
const { project, env, version, conn } = props;
|
|
16
|
+
this.projectName = project.fileName;
|
|
17
|
+
this.env = env;
|
|
18
|
+
this.version = version;
|
|
19
|
+
|
|
20
|
+
this.conn = conn;
|
|
21
|
+
this.outPath = outPathMap[this.projectName][this.env];
|
|
22
|
+
// 是否是ssr项目
|
|
23
|
+
this.isSSR = isSsrMap[this.projectName];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @Title: 设置连接服务器配置
|
|
28
|
+
* @Describe:
|
|
29
|
+
* @Author: Zsj
|
|
30
|
+
*/
|
|
31
|
+
async setConfig() {
|
|
32
|
+
const serverConfigMap = await getServerConfig(this.projectName);
|
|
33
|
+
|
|
34
|
+
let serverConfig = serverConfigMap[this.env];
|
|
35
|
+
|
|
36
|
+
// 选择release默认用国内cn服务器
|
|
37
|
+
if (this.env === 'release') {
|
|
38
|
+
serverConfig = serverConfigMap.cn[this.env];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (this.env === 'prod') {
|
|
42
|
+
serverConfig = serverConfigMap.aws.service[this.env];
|
|
43
|
+
serverConfig.privateKey = fs.readFileSync("../../../pem/pisell-pro.pem");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.serverConfig = serverConfig;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @Title: 连接服务器
|
|
51
|
+
* @Describe:
|
|
52
|
+
* @Author: Zsj
|
|
53
|
+
*/
|
|
54
|
+
async connectServer() {
|
|
55
|
+
if (!this.serverConfig) {
|
|
56
|
+
console.log('未找到发布配置!');
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
this.conn = await connectServer(this.serverConfig);
|
|
60
|
+
return this.conn;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @Title: 执行发布操作
|
|
65
|
+
* @Describe:
|
|
66
|
+
* @Author: Zsj
|
|
67
|
+
*/
|
|
68
|
+
async release() {
|
|
69
|
+
return await releaseProject(this.conn, {
|
|
70
|
+
path: this.outPath,
|
|
71
|
+
fileName: `${this.version}`,
|
|
72
|
+
isSSR: this.isSSR,
|
|
73
|
+
env: this.env,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @Title: 断开服务连接
|
|
79
|
+
* @Describe:
|
|
80
|
+
* @Author: Zsj
|
|
81
|
+
*/
|
|
82
|
+
async disconnectServer() {
|
|
83
|
+
return await this.conn.end();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default Release;
|