cmyr-template-cli 1.25.2 → 1.25.4
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/dist/plopfile.js
CHANGED
|
@@ -487,10 +487,12 @@ async function init(projectPath, answers) {
|
|
|
487
487
|
});
|
|
488
488
|
await initConfig(projectPath);
|
|
489
489
|
await initCommitizen(projectPath);
|
|
490
|
+
const info = await getProjectInfo(projectPath, answers);
|
|
491
|
+
if (info) {
|
|
492
|
+
await initProjectJson(projectPath, info);
|
|
493
|
+
}
|
|
490
494
|
if (isOpenSource) {
|
|
491
|
-
const info = await getProjectInfo(projectPath, answers);
|
|
492
495
|
if (info) {
|
|
493
|
-
await initProjectJson(projectPath, info);
|
|
494
496
|
if (isInitReadme) {
|
|
495
497
|
await initReadme(projectPath, info);
|
|
496
498
|
}
|
|
@@ -531,14 +533,14 @@ async function init(projectPath, answers) {
|
|
|
531
533
|
await asyncExec('java -version', {
|
|
532
534
|
cwd: projectPath,
|
|
533
535
|
});
|
|
534
|
-
await asyncExec('
|
|
536
|
+
await asyncExec('gradle -v', {
|
|
535
537
|
cwd: projectPath,
|
|
536
538
|
});
|
|
537
539
|
await asyncExec('git add .', {
|
|
538
540
|
cwd: projectPath,
|
|
539
541
|
});
|
|
540
542
|
try {
|
|
541
|
-
await asyncExec('
|
|
543
|
+
await asyncExec('gradle dependencies --no-daemon', {
|
|
542
544
|
cwd: projectPath,
|
|
543
545
|
});
|
|
544
546
|
}
|
|
@@ -860,7 +862,7 @@ async function getProjectInfo(projectPath, answers) {
|
|
|
860
862
|
var _a, _b, _c, _d, _e, _f;
|
|
861
863
|
const loading = ora__default["default"]('正在获取项目信息 ……').start();
|
|
862
864
|
try {
|
|
863
|
-
const { name, author, description, template, isOpenSource, isPublishToNpm, license, isPrivateScopePackage, scopeName } = answers;
|
|
865
|
+
const { name, author, description, template, isOpenSource, isPublishToNpm, license = 'UNLICENSED', isPrivateScopePackage, scopeName } = answers;
|
|
864
866
|
const templateMeta = getTemplateMeta(template);
|
|
865
867
|
const projectName = name;
|
|
866
868
|
const packageManager = 'npm';
|
|
@@ -878,6 +880,7 @@ async function getProjectInfo(projectPath, answers) {
|
|
|
878
880
|
const testCommand = ((_d = pkg === null || pkg === void 0 ? void 0 : pkg.scripts) === null || _d === void 0 ? void 0 : _d.test) && `${packageManager} run test`;
|
|
879
881
|
const lintCommand = ((_e = pkg === null || pkg === void 0 ? void 0 : pkg.scripts) === null || _e === void 0 ? void 0 : _e.lint) && `${packageManager} run lint`;
|
|
880
882
|
const commitCommand = ((_f = pkg === null || pkg === void 0 ? void 0 : pkg.scripts) === null || _f === void 0 ? void 0 : _f.commit) && `${packageManager} run commit`;
|
|
883
|
+
const mainFile = pkg === null || pkg === void 0 ? void 0 : pkg.main;
|
|
881
884
|
const githubUsername = (config === null || config === void 0 ? void 0 : config.GITHUB_USERNAME) || author;
|
|
882
885
|
const giteeUsername = config === null || config === void 0 ? void 0 : config.GITEE_USERNAME;
|
|
883
886
|
const weiboUsername = config === null || config === void 0 ? void 0 : config.WEIBO_USERNAME;
|
|
@@ -895,7 +898,7 @@ async function getProjectInfo(projectPath, answers) {
|
|
|
895
898
|
const licenseUrl = `${repositoryUrl}/blob/master/LICENSE`;
|
|
896
899
|
const discussionsUrl = `${repositoryUrl}/discussions`;
|
|
897
900
|
const pullRequestsUrl = `${repositoryUrl}/pulls`;
|
|
898
|
-
const authorWebsite = await getAuthorWebsiteFromGithubAPI(githubUsername);
|
|
901
|
+
const authorWebsite = isOpenSource ? await getAuthorWebsiteFromGithubAPI(githubUsername) : '';
|
|
899
902
|
const projectInfos = {
|
|
900
903
|
...answers,
|
|
901
904
|
currentYear: new Date().getFullYear(),
|
|
@@ -951,6 +954,7 @@ async function getProjectInfo(projectPath, answers) {
|
|
|
951
954
|
twitterUsername,
|
|
952
955
|
npmUsername,
|
|
953
956
|
templateMeta,
|
|
957
|
+
mainFile,
|
|
954
958
|
};
|
|
955
959
|
loading.succeed('项目信息 初始化成功!');
|
|
956
960
|
return projectInfos;
|
|
@@ -1304,33 +1308,45 @@ async function initDocker(projectPath, answers) {
|
|
|
1304
1308
|
const templateMeta = getTemplateMeta(answers.template);
|
|
1305
1309
|
const files = ['.dockerignore', 'docker-compose.yml'];
|
|
1306
1310
|
await copyFilesFromTemplates(projectPath, files);
|
|
1307
|
-
let
|
|
1311
|
+
let dockerfile = 'Dockerfile';
|
|
1312
|
+
const newPath = path__default["default"].join(projectPath, 'Dockerfile');
|
|
1313
|
+
if (await fs__default["default"].pathExists(newPath)) {
|
|
1314
|
+
await fs__default["default"].remove(newPath);
|
|
1315
|
+
}
|
|
1316
|
+
if ((templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.runtime) === 'java') {
|
|
1317
|
+
const templatePath = path__default["default"].join(__dirname, '../templates/java/Dockerfile.ejs');
|
|
1318
|
+
await ejsRender(templatePath, { javaVersion: templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.javaVersion }, newPath);
|
|
1319
|
+
loading.succeed('Docker 初始化成功!');
|
|
1320
|
+
return;
|
|
1321
|
+
}
|
|
1322
|
+
if ((templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.runtime) === 'nodejs') {
|
|
1323
|
+
if ((templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.runtime) === 'nodejs') {
|
|
1324
|
+
const scriptsDir = path__default["default"].join(projectPath, 'scripts');
|
|
1325
|
+
if (!await fs__default["default"].pathExists(scriptsDir)) {
|
|
1326
|
+
await fs__default["default"].mkdir(scriptsDir);
|
|
1327
|
+
}
|
|
1328
|
+
await copyFilesFromTemplates(projectPath, ['scripts/minify-docker.js']);
|
|
1329
|
+
}
|
|
1330
|
+
const pkg = await getProjectJson(projectPath);
|
|
1331
|
+
const mainFile = pkg === null || pkg === void 0 ? void 0 : pkg.main;
|
|
1332
|
+
const templatePath = path__default["default"].join(__dirname, '../templates/Dockerfile');
|
|
1333
|
+
await ejsRender(templatePath, { mainFile }, newPath);
|
|
1334
|
+
loading.succeed('Docker 初始化成功!');
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1308
1337
|
switch (templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.runtime) {
|
|
1309
|
-
case 'java':
|
|
1310
|
-
dockerfilePath = (templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.javaVersion) === 8 ? 'java/jdk8/Dockerfile' : 'java/jdk17/Dockerfile';
|
|
1311
|
-
break;
|
|
1312
1338
|
case 'python':
|
|
1313
|
-
|
|
1339
|
+
dockerfile = 'python/Dockerfile';
|
|
1314
1340
|
break;
|
|
1315
1341
|
case 'golang':
|
|
1316
|
-
|
|
1342
|
+
dockerfile = 'golang/Dockerfile';
|
|
1317
1343
|
break;
|
|
1318
1344
|
default:
|
|
1319
|
-
|
|
1345
|
+
dockerfile = 'Dockerfile';
|
|
1320
1346
|
break;
|
|
1321
1347
|
}
|
|
1322
|
-
const
|
|
1323
|
-
|
|
1324
|
-
await fs__default["default"].remove(newPath);
|
|
1325
|
-
}
|
|
1326
|
-
await fs__default["default"].copyFile(path__default["default"].join(__dirname, '../templates/', dockerfilePath), newPath);
|
|
1327
|
-
if ((templateMeta === null || templateMeta === void 0 ? void 0 : templateMeta.runtime) === 'nodejs') {
|
|
1328
|
-
const scriptsDir = path__default["default"].join(projectPath, 'scripts');
|
|
1329
|
-
if (!await fs__default["default"].pathExists(scriptsDir)) {
|
|
1330
|
-
await fs__default["default"].mkdir(scriptsDir);
|
|
1331
|
-
}
|
|
1332
|
-
await copyFilesFromTemplates(projectPath, ['scripts/minify-docker.js']);
|
|
1333
|
-
}
|
|
1348
|
+
const dockerfilePath = path__default["default"].join(__dirname, '../templates/', dockerfile);
|
|
1349
|
+
await fs__default["default"].copyFile(dockerfilePath, newPath);
|
|
1334
1350
|
loading.succeed('Docker 初始化成功!');
|
|
1335
1351
|
}
|
|
1336
1352
|
catch (error) {
|
|
@@ -1488,6 +1504,14 @@ function kebabCase(str) {
|
|
|
1488
1504
|
function getTemplateMeta(template) {
|
|
1489
1505
|
return TEMPLATES_META_LIST.find((e) => e.name === template);
|
|
1490
1506
|
}
|
|
1507
|
+
async function ejsRender(templatePath, data, outputPath) {
|
|
1508
|
+
const template = (await fs__default["default"].readFile(templatePath, 'utf8')).toString();
|
|
1509
|
+
const content = await ejs__default["default"].render(template, data, {
|
|
1510
|
+
debug: false,
|
|
1511
|
+
async: true,
|
|
1512
|
+
});
|
|
1513
|
+
await fs__default["default"].writeFile(outputPath, content);
|
|
1514
|
+
}
|
|
1491
1515
|
|
|
1492
1516
|
module.exports = function (plop) {
|
|
1493
1517
|
plop.setActionType('initProject', initProject);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cmyr-template-cli",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.4",
|
|
4
4
|
"description": "草梅友仁自制的项目模板创建器",
|
|
5
5
|
"author": "CaoMeiYouRen",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@types/node": "^20.0.0",
|
|
48
48
|
"@types/promise.any": "^2.0.0",
|
|
49
49
|
"@typescript-eslint/eslint-plugin": "6.15.0",
|
|
50
|
-
"@typescript-eslint/parser": "6.
|
|
50
|
+
"@typescript-eslint/parser": "6.16.0",
|
|
51
51
|
"commitizen": "^4.2.2",
|
|
52
52
|
"conventional-changelog-cli": "^4.0.0",
|
|
53
53
|
"conventional-changelog-cmyr-config": "^2.1.1",
|
package/templates/Dockerfile
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 阶段一:安装依赖
|
|
2
|
+
FROM gradle:8.5.0-jdk<%= javaVersion %> as dependencies
|
|
3
|
+
|
|
4
|
+
WORKDIR /home/app
|
|
5
|
+
|
|
6
|
+
COPY build.gradle /home/app/build.gradle
|
|
7
|
+
|
|
8
|
+
# 只安装依赖,跳过测试
|
|
9
|
+
RUN gradle -v && gradle dependencies --no-daemon
|
|
10
|
+
|
|
11
|
+
# 阶段二:构建阶段
|
|
12
|
+
FROM dependencies as builder
|
|
13
|
+
|
|
14
|
+
COPY . /home/app
|
|
15
|
+
|
|
16
|
+
# 构建
|
|
17
|
+
RUN gradle clean build --no-daemon
|
|
18
|
+
|
|
19
|
+
# 阶段三:生产阶段
|
|
20
|
+
FROM eclipse-temurin:<%= javaVersion %>-jre-alpine
|
|
21
|
+
|
|
22
|
+
WORKDIR /home/app
|
|
23
|
+
|
|
24
|
+
COPY --from=builder /home/app/build/libs/main.jar /home/app
|
|
25
|
+
|
|
26
|
+
EXPOSE 8080
|
|
27
|
+
|
|
28
|
+
CMD ["java", "-jar", "main.jar"]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# 阶段一:安装依赖
|
|
2
|
-
FROM maven:3-eclipse-temurin-17-alpine as dependencies
|
|
3
|
-
|
|
4
|
-
WORKDIR /home/app
|
|
5
|
-
|
|
6
|
-
RUN java -version && mvn -version && \
|
|
7
|
-
echo '<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public/</url></mirror></mirrors></settings>' > /usr/share/maven/conf/settings.xml
|
|
8
|
-
|
|
9
|
-
COPY pom.xml /home/app/pom.xml
|
|
10
|
-
|
|
11
|
-
# 只安装依赖,跳过测试
|
|
12
|
-
RUN mvn dependency:go-offline -B -Dmaven.test.skip=true
|
|
13
|
-
|
|
14
|
-
# 阶段二:构建阶段
|
|
15
|
-
FROM dependencies as builder
|
|
16
|
-
|
|
17
|
-
COPY . /home/app
|
|
18
|
-
|
|
19
|
-
# 构建
|
|
20
|
-
RUN mvn clean package -Dmaven.test.skip=true
|
|
21
|
-
|
|
22
|
-
# 阶段三:生产阶段
|
|
23
|
-
FROM eclipse-temurin:17-jre-alpine
|
|
24
|
-
|
|
25
|
-
WORKDIR /home/app
|
|
26
|
-
|
|
27
|
-
RUN java -version
|
|
28
|
-
|
|
29
|
-
COPY --from=builder /home/app/target/main.jar /home/app
|
|
30
|
-
|
|
31
|
-
EXPOSE 8080
|
|
32
|
-
|
|
33
|
-
CMD ["java", "-jar", "main.jar"]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# 阶段一:安装依赖
|
|
2
|
-
FROM maven:3-eclipse-temurin-8-alpine as dependencies
|
|
3
|
-
|
|
4
|
-
WORKDIR /home/app
|
|
5
|
-
|
|
6
|
-
RUN java -version && mvn -version && \
|
|
7
|
-
echo '<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public/</url></mirror></mirrors></settings>' > /usr/share/maven/conf/settings.xml
|
|
8
|
-
|
|
9
|
-
COPY pom.xml /home/app/pom.xml
|
|
10
|
-
|
|
11
|
-
# 只安装依赖,跳过测试
|
|
12
|
-
RUN mvn dependency:go-offline -B -Dmaven.test.skip=true
|
|
13
|
-
|
|
14
|
-
# 阶段二:构建阶段
|
|
15
|
-
FROM dependencies as builder
|
|
16
|
-
|
|
17
|
-
COPY . /home/app
|
|
18
|
-
|
|
19
|
-
# 构建
|
|
20
|
-
RUN mvn clean package -Dmaven.test.skip=true
|
|
21
|
-
|
|
22
|
-
# 阶段三:生产阶段
|
|
23
|
-
FROM eclipse-temurin:8-jre-alpine
|
|
24
|
-
|
|
25
|
-
WORKDIR /home/app
|
|
26
|
-
|
|
27
|
-
RUN java -version
|
|
28
|
-
|
|
29
|
-
COPY --from=builder /home/app/target/main.jar /home/app
|
|
30
|
-
|
|
31
|
-
EXPOSE 8080
|
|
32
|
-
|
|
33
|
-
CMD ["java", "-jar", "main.jar"]
|