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('mvn -version', {
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('mvn dependency:go-offline -B -Dmaven.test.skip=true', {
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 dockerfilePath = 'Dockerfile';
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
- dockerfilePath = 'python/Dockerfile';
1339
+ dockerfile = 'python/Dockerfile';
1314
1340
  break;
1315
1341
  case 'golang':
1316
- dockerfilePath = 'golang/Dockerfile';
1342
+ dockerfile = 'golang/Dockerfile';
1317
1343
  break;
1318
1344
  default:
1319
- dockerfilePath = 'Dockerfile';
1345
+ dockerfile = 'Dockerfile';
1320
1346
  break;
1321
1347
  }
1322
- const newPath = path__default["default"].join(projectPath, 'Dockerfile');
1323
- if (await fs__default["default"].pathExists(newPath)) {
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.2",
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.15.0",
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",
@@ -37,5 +37,4 @@ COPY --from=docker-minifier /home/app /home/app
37
37
 
38
38
  EXPOSE 3000
39
39
 
40
- CMD ["node", "dist/main.js"]
41
- # CMD ["node", "dist/index.js"]
40
+ CMD ["node", "<%= mainFile %>"]
@@ -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"]