@d-zero/create-frontend 5.0.0-alpha.9 → 5.0.0-beta.1

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.
@@ -0,0 +1 @@
1
+ CHANGELOG.md
package/CHANGELOG.md CHANGED
@@ -3,6 +3,180 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.0.0-beta.1](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-beta.0...v5.0.0-beta.1) (2025-07-01)
7
+
8
+ **Note:** Version bump only for package @d-zero/create-frontend
9
+
10
+ # [5.0.0-beta.0](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.46...v5.0.0-beta.0) (2025-06-20)
11
+
12
+ ### Bug Fixes
13
+
14
+ - resolve Yarn v4 compatibility issues in tests ([c83d417](https://github.com/d-zero-dev/frontend-env/commit/c83d4172356b816133eb0e2bb30da30f5cf42083))
15
+
16
+ ### Reverts
17
+
18
+ - Revert "chore(repo): migrate to Yarn v4" ([d9d6623](https://github.com/d-zero-dev/frontend-env/commit/d9d66235d04bc0b7c423a9d2a0678bfedd6022b3))
19
+
20
+ # [5.0.0-alpha.46](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.45...v5.0.0-alpha.46) (2025-05-19)
21
+
22
+ **Note:** Version bump only for package @d-zero/create-frontend
23
+
24
+ # [5.0.0-alpha.45](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.44...v5.0.0-alpha.45) (2025-04-11)
25
+
26
+ **Note:** Version bump only for package @d-zero/create-frontend
27
+
28
+ # [5.0.0-alpha.44](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.43...v5.0.0-alpha.44) (2025-03-12)
29
+
30
+ **Note:** Version bump only for package @d-zero/create-frontend
31
+
32
+ # [5.0.0-alpha.43](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.42...v5.0.0-alpha.43) (2025-03-12)
33
+
34
+ **Note:** Version bump only for package @d-zero/create-frontend
35
+
36
+ # [5.0.0-alpha.42](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.41...v5.0.0-alpha.42) (2025-03-06)
37
+
38
+ ### Features
39
+
40
+ - **create-frontend:** add pattern for test files in plop configuration ([97e1f1e](https://github.com/d-zero-dev/frontend-env/commit/97e1f1e36f43cc98cadf18c71d304290fac74bce))
41
+
42
+ # [5.0.0-alpha.41](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.40...v5.0.0-alpha.41) (2025-03-03)
43
+
44
+ **Note:** Version bump only for package @d-zero/create-frontend
45
+
46
+ # [5.0.0-alpha.40](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.39...v5.0.0-alpha.40) (2025-03-03)
47
+
48
+ **Note:** Version bump only for package @d-zero/create-frontend
49
+
50
+ # [5.0.0-alpha.39](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.38...v5.0.0-alpha.39) (2025-02-12)
51
+
52
+ **Note:** Version bump only for package @d-zero/create-frontend
53
+
54
+ # [5.0.0-alpha.38](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.37...v5.0.0-alpha.38) (2025-02-05)
55
+
56
+ **Note:** Version bump only for package @d-zero/create-frontend
57
+
58
+ # [5.0.0-alpha.37](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.36...v5.0.0-alpha.37) (2025-02-03)
59
+
60
+ ### Bug Fixes
61
+
62
+ - **scaffold:** .bge-contentsクラス名のsが抜けていたので修正 ([c9b4757](https://github.com/d-zero-dev/frontend-env/commit/c9b4757e16aa35178883fed8e8e0fb5a34b24c90))
63
+ - **scaffold:** bge-style.scssのファイル名変更に伴う周辺処理の更新 ([bcca3a1](https://github.com/d-zero-dev/frontend-env/commit/bcca3a18d560694da914b207c01b9309c184ef39))
64
+
65
+ # [5.0.0-alpha.36](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.35...v5.0.0-alpha.36) (2025-01-06)
66
+
67
+ **Note:** Version bump only for package @d-zero/create-frontend
68
+
69
+ # [5.0.0-alpha.35](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.34...v5.0.0-alpha.35) (2024-12-23)
70
+
71
+ **Note:** Version bump only for package @d-zero/create-frontend
72
+
73
+ # [5.0.0-alpha.34](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.33...v5.0.0-alpha.34) (2024-12-16)
74
+
75
+ **Note:** Version bump only for package @d-zero/create-frontend
76
+
77
+ # [5.0.0-alpha.33](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.32...v5.0.0-alpha.33) (2024-12-10)
78
+
79
+ **Note:** Version bump only for package @d-zero/create-frontend
80
+
81
+ # [5.0.0-alpha.32](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.31...v5.0.0-alpha.32) (2024-12-10)
82
+
83
+ **Note:** Version bump only for package @d-zero/create-frontend
84
+
85
+ # [5.0.0-alpha.31](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.30...v5.0.0-alpha.31) (2024-11-06)
86
+
87
+ **Note:** Version bump only for package @d-zero/create-frontend
88
+
89
+ # [5.0.0-alpha.30](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.29...v5.0.0-alpha.30) (2024-11-06)
90
+
91
+ **Note:** Version bump only for package @d-zero/create-frontend
92
+
93
+ # [5.0.0-alpha.29](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.28...v5.0.0-alpha.29) (2024-11-06)
94
+
95
+ **Note:** Version bump only for package @d-zero/create-frontend
96
+
97
+ # [5.0.0-alpha.28](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.27...v5.0.0-alpha.28) (2024-11-05)
98
+
99
+ **Note:** Version bump only for package @d-zero/create-frontend
100
+
101
+ # [5.0.0-alpha.27](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.26...v5.0.0-alpha.27) (2024-10-31)
102
+
103
+ **Note:** Version bump only for package @d-zero/create-frontend
104
+
105
+ # [5.0.0-alpha.26](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.25...v5.0.0-alpha.26) (2024-10-31)
106
+
107
+ **Note:** Version bump only for package @d-zero/create-frontend
108
+
109
+ # [5.0.0-alpha.25](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.24...v5.0.0-alpha.25) (2024-10-29)
110
+
111
+ ### Features
112
+
113
+ - **create-frontend:** add `--debug` option ([835529e](https://github.com/d-zero-dev/frontend-env/commit/835529e798d634ed75dbb5ec8d7e3e75f58b0fae))
114
+ - **create-frontend:** add interactive mode ([e0cf69d](https://github.com/d-zero-dev/frontend-env/commit/e0cf69daca825b26fd490ea0ea6bc10a3f258c58))
115
+ - **create-frontend:** add settings for `type=burger` ([b755336](https://github.com/d-zero-dev/frontend-env/commit/b755336b704086adcc67af8111a49a0bcb5b82cd))
116
+ - **create-frontend:** add settings for `type=static` ([7298f7e](https://github.com/d-zero-dev/frontend-env/commit/7298f7edbda2cfdf267cd9145686be7cb125587f))
117
+
118
+ # [5.0.0-alpha.24](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.23...v5.0.0-alpha.24) (2024-10-24)
119
+
120
+ **Note:** Version bump only for package @d-zero/create-frontend
121
+
122
+ # [5.0.0-alpha.23](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.22...v5.0.0-alpha.23) (2024-10-15)
123
+
124
+ **Note:** Version bump only for package @d-zero/create-frontend
125
+
126
+ # [5.0.0-alpha.22](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.21...v5.0.0-alpha.22) (2024-10-11)
127
+
128
+ **Note:** Version bump only for package @d-zero/create-frontend
129
+
130
+ # [5.0.0-alpha.21](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.20...v5.0.0-alpha.21) (2024-10-11)
131
+
132
+ **Note:** Version bump only for package @d-zero/create-frontend
133
+
134
+ # [5.0.0-alpha.20](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.19...v5.0.0-alpha.20) (2024-10-11)
135
+
136
+ **Note:** Version bump only for package @d-zero/create-frontend
137
+
138
+ # [5.0.0-alpha.19](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.18...v5.0.0-alpha.19) (2024-10-11)
139
+
140
+ **Note:** Version bump only for package @d-zero/create-frontend
141
+
142
+ # [5.0.0-alpha.18](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.17...v5.0.0-alpha.18) (2024-10-11)
143
+
144
+ **Note:** Version bump only for package @d-zero/create-frontend
145
+
146
+ # [5.0.0-alpha.17](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.16...v5.0.0-alpha.17) (2024-10-10)
147
+
148
+ **Note:** Version bump only for package @d-zero/create-frontend
149
+
150
+ # [5.0.0-alpha.16](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.15...v5.0.0-alpha.16) (2024-10-09)
151
+
152
+ **Note:** Version bump only for package @d-zero/create-frontend
153
+
154
+ # [5.0.0-alpha.15](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.14...v5.0.0-alpha.15) (2024-10-01)
155
+
156
+ **Note:** Version bump only for package @d-zero/create-frontend
157
+
158
+ # [5.0.0-alpha.14](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.13...v5.0.0-alpha.14) (2024-07-31)
159
+
160
+ **Note:** Version bump only for package @d-zero/create-frontend
161
+
162
+ # [5.0.0-alpha.13](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.12...v5.0.0-alpha.13) (2024-07-22)
163
+
164
+ **Note:** Version bump only for package @d-zero/create-frontend
165
+
166
+ # [5.0.0-alpha.12](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.11...v5.0.0-alpha.12) (2024-07-05)
167
+
168
+ **Note:** Version bump only for package @d-zero/create-frontend
169
+
170
+ # [5.0.0-alpha.11](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.10...v5.0.0-alpha.11) (2024-07-05)
171
+
172
+ **Note:** Version bump only for package @d-zero/create-frontend
173
+
174
+ # [5.0.0-alpha.10](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.9...v5.0.0-alpha.10) (2024-06-11)
175
+
176
+ ### Bug Fixes
177
+
178
+ - **scaffold:** 生成ファイルや静的ファイルがリント対象となっていたため除外設定を追加 ([0938636](https://github.com/d-zero-dev/frontend-env/commit/0938636ec260337914eaa4d0ab98aead709164fc))
179
+
6
180
  # [5.0.0-alpha.9](https://github.com/d-zero-dev/frontend-env/compare/v5.0.0-alpha.8...v5.0.0-alpha.9) (2024-06-10)
7
181
 
8
182
  **Note:** Version bump only for package @d-zero/create-frontend
package/index.js CHANGED
@@ -1,14 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
3
 
5
4
  import { Plop, run } from 'plop';
6
5
 
7
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
-
9
6
  Plop.prepare(
10
7
  {
11
- configPath: path.join(__dirname, 'plopfile.js'),
8
+ configPath: path.join(import.meta.dirname, 'plopfile.js'),
12
9
  },
13
10
  (env) =>
14
11
  Plop.execute(
package/index.spec.js CHANGED
@@ -5,6 +5,10 @@ import path from 'node:path';
5
5
  import { execa } from 'execa';
6
6
  import { describe, test, expect, beforeEach } from 'vitest';
7
7
 
8
+ /**
9
+ *
10
+ * @param task
11
+ */
8
12
  function getName(task) {
9
13
  return encodeURIComponent(`${task.suite.name}_${task.name}`.toLowerCase());
10
14
  }
@@ -14,14 +18,17 @@ beforeEach((ctx) => {
14
18
  });
15
19
 
16
20
  describe('CLI', () => {
17
- test('npx', async ({ tmpDir, task }) => {
18
- const dir = path.join(tmpDir, getName(task));
21
+ /**
22
+ *
23
+ * @param dir
24
+ * @param type
25
+ */
26
+ async function cliTest(dir, type) {
19
27
  const { stdout } = await execa(
20
28
  'npx',
21
29
  [
22
30
  '@d-zero/create-frontend',
23
- '--type',
24
- 'burger',
31
+ ...(type ? ['--type', type] : []),
25
32
  '--dir',
26
33
  dir,
27
34
  '--no-install',
@@ -34,28 +41,132 @@ describe('CLI', () => {
34
41
  },
35
42
  },
36
43
  );
37
- expect(stdout.replaceAll(path.sep, '/').split('\n')).toStrictEqual([
44
+ return stdout.replaceAll(path.sep, '/').split('\n');
45
+ }
46
+
47
+ test('npx', async ({ tmpDir, task }) => {
48
+ const dir = path.join(tmpDir, getName(task));
49
+ const actual = await cliTest(dir);
50
+ expect(actual).toStrictEqual([
51
+ `✔ ++ ${dir}/tsconfig.json`,
52
+ `✔ ++ ${dir}/prh.yaml`,
53
+ `✔ ++ ${dir}/package.json`,
54
+ `✔ ++ ${dir}/markuplint.config.js`,
55
+ `✔ ++ ${dir}/lint-staged.config.mjs`,
56
+ `✔ ++ ${dir}/eslint.config.js`,
57
+ `✔ ++ ${dir}/eleventy.config.mjs`,
58
+ `✔ ++ ${dir}/cspell.json`,
59
+ `✔ ++ ${dir}/README.md`,
60
+ `✔ ++ ${dir}/CHANGELOG.md`,
61
+ `✔ ++ ${dir}/.yarnrc.yml`,
62
+ `✔ ++ ${dir}/.textlintrc.js`,
63
+ `✔ ++ ${dir}/.textlintignore`,
64
+ `✔ ++ ${dir}/.stylelintrc`,
65
+ `✔ ++ ${dir}/.pug-lintrc`,
66
+ `✔ ++ ${dir}/.prettierrc.mjs`,
67
+ `✔ ++ ${dir}/.postcssrc.js`,
68
+ `✔ ++ ${dir}/.npmignore`,
69
+ `✔ ++ ${dir}/.gitignore`,
70
+ `✔ ++ ${dir}/.editorconfig`,
71
+ `✔ ++ ${dir}/.clinerules`,
72
+ `✔ ++ ${dir}/.clineignore`,
73
+ `✔ ++ ${dir}/ai-tasks/page-to-burger.md`,
74
+ `✔ ++ ${dir}/ai-tasks/create-page.md`,
75
+ `✔ ++ ${dir}/ai-tasks/create-component.md`,
76
+ `✔ ++ ${dir}/__info/print.txt`,
77
+ `✔ ++ ${dir}/__assets/htdocs/index.pug`,
78
+ `✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
79
+ `✔ ++ ${dir}/__assets/htdocs/css/style.css`,
80
+ `✔ ++ ${dir}/__assets/htdocs/css/bge_style.css`,
81
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/index.pug`,
82
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/302_form_complete.pug`,
83
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/301_form_confirm.pug`,
84
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/300_form_input.pug`,
85
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/210_blog_index.pug`,
86
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/200_blog_index.pug`,
87
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/100_sub.pug`,
88
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/000_home.pug`,
89
+ `✔ ++ ${dir}/__assets/htdocs/__tmpl/.markuplintrc`,
90
+ `✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
91
+ `✔ ++ ${dir}/__assets/_libs/style/general/img.css`,
92
+ `✔ ++ ${dir}/__assets/_libs/style/general/button.css`,
93
+ `✔ ++ ${dir}/__assets/_libs/style/general/body.css`,
94
+ `✔ ++ ${dir}/__assets/_libs/style/general/all.css`,
95
+ `✔ ++ ${dir}/__assets/_libs/style/base/root.css`,
96
+ `✔ ++ ${dir}/__assets/_libs/script/index.ts`,
97
+ `✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
98
+ `✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
99
+ `✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
100
+ `✔ ++ ${dir}/__assets/_libs/data/data.yml`,
101
+ `✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
102
+ `✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
103
+ `✔ ++ ${dir}/__assets/_libs/data/bge-blocks.html`,
104
+ `✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
105
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
106
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.css`,
107
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
108
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.css`,
109
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-sub.css`,
110
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-home.css`,
111
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
112
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.css`,
113
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
114
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.css`,
115
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
116
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.css`,
117
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
118
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.css`,
119
+ `✔ ++ ${dir}/__assets/_libs/component/c-media-list.css`,
120
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
121
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.css`,
122
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
123
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.css`,
124
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-main.css`,
125
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-index.css`,
126
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
127
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.css`,
128
+ `✔ ++ ${dir}/__assets/_libs/component/c-card-list.css`,
129
+ `✔ ++ ${dir}/.vscode/settings.json`,
130
+ `✔ ++ ${dir}/.vscode/extensions.json`,
131
+ `✔ ++ ${dir}/.husky/pre-commit`,
132
+ '✔ Install dependencies : skipped',
133
+ ]);
134
+ });
135
+
136
+ test('npx --type burger', async ({ tmpDir, task }) => {
137
+ const dir = path.join(tmpDir, getName(task));
138
+ const actual = await cliTest(dir, 'burger');
139
+ expect(actual).toStrictEqual([
38
140
  `✔ ++ ${dir}/tsconfig.json`,
141
+ `✔ ++ ${dir}/prh.yaml`,
39
142
  `✔ ++ ${dir}/package.json`,
143
+ `✔ ++ ${dir}/markuplint.config.js`,
40
144
  `✔ ++ ${dir}/lint-staged.config.mjs`,
41
- `✔ ++ ${dir}/eleventy.config.cjs`,
145
+ `✔ ++ ${dir}/eslint.config.js`,
146
+ `✔ ++ ${dir}/eleventy.config.mjs`,
42
147
  `✔ ++ ${dir}/cspell.json`,
43
148
  `✔ ++ ${dir}/README.md`,
44
149
  `✔ ++ ${dir}/CHANGELOG.md`,
150
+ `✔ ++ ${dir}/.yarnrc.yml`,
45
151
  `✔ ++ ${dir}/.textlintrc.js`,
152
+ `✔ ++ ${dir}/.textlintignore`,
46
153
  `✔ ++ ${dir}/.stylelintrc`,
47
154
  `✔ ++ ${dir}/.pug-lintrc`,
48
155
  `✔ ++ ${dir}/.prettierrc.mjs`,
49
156
  `✔ ++ ${dir}/.postcssrc.js`,
50
157
  `✔ ++ ${dir}/.npmignore`,
51
- `✔ ++ ${dir}/.markuplintrc`,
52
158
  `✔ ++ ${dir}/.gitignore`,
53
- `✔ ++ ${dir}/.eslintrc.cjs`,
54
159
  `✔ ++ ${dir}/.editorconfig`,
160
+ `✔ ++ ${dir}/.clinerules`,
161
+ `✔ ++ ${dir}/.clineignore`,
162
+ `✔ ++ ${dir}/ai-tasks/page-to-burger.md`,
163
+ `✔ ++ ${dir}/ai-tasks/create-page.md`,
164
+ `✔ ++ ${dir}/ai-tasks/create-component.md`,
165
+ `✔ ++ ${dir}/__info/print.txt`,
55
166
  `✔ ++ ${dir}/__assets/htdocs/index.pug`,
56
- `✔ ++ ${dir}/__assets/htdocs/.eslintrc`,
57
167
  `✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
58
- `✔ ++ ${dir}/__assets/htdocs/css/style.scss`,
168
+ `✔ ++ ${dir}/__assets/htdocs/css/style.css`,
169
+ `✔ ++ ${dir}/__assets/htdocs/css/bge_style.css`,
59
170
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/index.pug`,
60
171
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/302_form_complete.pug`,
61
172
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/301_form_confirm.pug`,
@@ -65,53 +176,126 @@ describe('CLI', () => {
65
176
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/100_sub.pug`,
66
177
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/000_home.pug`,
67
178
  `✔ ++ ${dir}/__assets/htdocs/__tmpl/.markuplintrc`,
68
- `✔ ++ ${dir}/__assets/htdocs/@static/empty`,
69
- `✔ ++ ${dir}/__assets/htdocs/@static/img/empty`,
70
179
  `✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
71
- `✔ ++ ${dir}/__assets/_libs/style/theme/_index.scss`,
72
- `✔ ++ ${dir}/__assets/_libs/style/theme/_font.scss`,
73
- `✔ ++ ${dir}/__assets/_libs/style/theme/_dimension.scss`,
74
- `✔ ++ ${dir}/__assets/_libs/style/theme/_color.scss`,
75
- `✔ ++ ${dir}/__assets/_libs/style/general/_img.scss`,
76
- `✔ ++ ${dir}/__assets/_libs/style/general/_button.scss`,
77
- `✔ ++ ${dir}/__assets/_libs/style/general/_body.scss`,
78
- `✔ ++ ${dir}/__assets/_libs/style/general/_all.scss`,
79
- `✔ ++ ${dir}/__assets/_libs/style/base/_root.scss`,
180
+ `✔ ++ ${dir}/__assets/_libs/style/general/img.css`,
181
+ `✔ ++ ${dir}/__assets/_libs/style/general/button.css`,
182
+ `✔ ++ ${dir}/__assets/_libs/style/general/body.css`,
183
+ `✔ ++ ${dir}/__assets/_libs/style/general/all.css`,
184
+ `✔ ++ ${dir}/__assets/_libs/style/base/root.css`,
185
+ `✔ ++ ${dir}/__assets/_libs/script/index.ts`,
186
+ `✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
187
+ `✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
188
+ `✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
189
+ `✔ ++ ${dir}/__assets/_libs/data/data.yml`,
190
+ `✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
191
+ `✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
192
+ `✔ ++ ${dir}/__assets/_libs/data/bge-blocks.html`,
193
+ `✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
194
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
195
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.css`,
196
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
197
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.css`,
198
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-sub.css`,
199
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-home.css`,
200
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
201
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.css`,
202
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
203
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.css`,
204
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
205
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.css`,
206
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
207
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.css`,
208
+ `✔ ++ ${dir}/__assets/_libs/component/c-media-list.css`,
209
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
210
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.css`,
211
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
212
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.css`,
213
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-main.css`,
214
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-index.css`,
215
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
216
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.css`,
217
+ `✔ ++ ${dir}/__assets/_libs/component/c-card-list.css`,
218
+ `✔ ++ ${dir}/.vscode/settings.json`,
219
+ `✔ ++ ${dir}/.vscode/extensions.json`,
220
+ `✔ ++ ${dir}/.husky/pre-commit`,
221
+ '✔ Install dependencies : skipped',
222
+ ]);
223
+ });
224
+
225
+ test('npx --type static', async ({ tmpDir, task }) => {
226
+ const dir = path.join(tmpDir, getName(task));
227
+ const actual = await cliTest(dir, 'static');
228
+ expect(actual).toStrictEqual([
229
+ `✔ ++ ${dir}/tsconfig.json`,
230
+ `✔ ++ ${dir}/prh.yaml`,
231
+ `✔ ++ ${dir}/package.json`,
232
+ `✔ ++ ${dir}/markuplint.config.js`,
233
+ `✔ ++ ${dir}/lint-staged.config.mjs`,
234
+ `✔ ++ ${dir}/eslint.config.js`,
235
+ `✔ ++ ${dir}/eleventy.config.mjs`,
236
+ `✔ ++ ${dir}/cspell.json`,
237
+ `✔ ++ ${dir}/README.md`,
238
+ `✔ ++ ${dir}/CHANGELOG.md`,
239
+ `✔ ++ ${dir}/.yarnrc.yml`,
240
+ `✔ ++ ${dir}/.textlintrc.js`,
241
+ `✔ ++ ${dir}/.textlintignore`,
242
+ `✔ ++ ${dir}/.stylelintrc`,
243
+ `✔ ++ ${dir}/.pug-lintrc`,
244
+ `✔ ++ ${dir}/.prettierrc.mjs`,
245
+ `✔ ++ ${dir}/.postcssrc.js`,
246
+ `✔ ++ ${dir}/.npmignore`,
247
+ `✔ ++ ${dir}/.gitignore`,
248
+ `✔ ++ ${dir}/.editorconfig`,
249
+ `✔ ++ ${dir}/.clinerules`,
250
+ `✔ ++ ${dir}/.clineignore`,
251
+ `✔ ++ ${dir}/ai-tasks/page-to-burger.md`,
252
+ `✔ ++ ${dir}/ai-tasks/create-page.md`,
253
+ `✔ ++ ${dir}/ai-tasks/create-component.md`,
254
+ `✔ ++ ${dir}/__info/print.txt`,
255
+ `✔ ++ ${dir}/__assets/htdocs/index.pug`,
256
+ `✔ ++ ${dir}/__assets/htdocs/js/script.ts`,
257
+ `✔ ++ ${dir}/__assets/htdocs/css/style.css`,
258
+ `✔ ++ ${dir}/__assets/_libs/.markuplintrc`,
259
+ `✔ ++ ${dir}/__assets/_libs/style/general/img.css`,
260
+ `✔ ++ ${dir}/__assets/_libs/style/general/button.css`,
261
+ `✔ ++ ${dir}/__assets/_libs/style/general/body.css`,
262
+ `✔ ++ ${dir}/__assets/_libs/style/general/all.css`,
263
+ `✔ ++ ${dir}/__assets/_libs/style/base/root.css`,
80
264
  `✔ ++ ${dir}/__assets/_libs/script/index.ts`,
81
265
  `✔ ++ ${dir}/__assets/_libs/mixin/meta.pug`,
82
266
  `✔ ++ ${dir}/__assets/_libs/img/bg-repeat-01.gif`,
83
267
  `✔ ++ ${dir}/__assets/_libs/img/bg-arrow.svg`,
84
268
  `✔ ++ ${dir}/__assets/_libs/data/data.yml`,
269
+ `✔ ++ ${dir}/__assets/_libs/data/blocks.js`,
85
270
  `✔ ++ ${dir}/__assets/_libs/data/blocks.html`,
86
- `✔ ++ ${dir}/__assets/_libs/data/blocks.cjs`,
87
- `✔ ++ ${dir}/__assets/_libs/data/blocks-burger.html`,
88
271
  `✔ ++ ${dir}/__assets/_libs/data/.markuplintrc`,
89
- `✔ ++ ${dir}/__assets/_libs/component/_c-title-page.scss`,
90
- `✔ ++ ${dir}/__assets/_libs/component/_c-title-page.pug`,
91
- `✔ ++ ${dir}/__assets/_libs/component/_c-pagination.scss`,
92
- `✔ ++ ${dir}/__assets/_libs/component/_c-pagination.pug`,
93
- `✔ ++ ${dir}/__assets/_libs/component/_c-page-sub.scss`,
94
- `✔ ++ ${dir}/__assets/_libs/component/_c-page-home.scss`,
95
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-sitemap.scss`,
96
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-sitemap.pug`,
97
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-global.scss`,
98
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-global.pug`,
99
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-breadcrumb.scss`,
100
- `✔ ++ ${dir}/__assets/_libs/component/_c-nav-breadcrumb.pug`,
101
- `✔ ++ ${dir}/__assets/_libs/component/_c-media.scss`,
102
- `✔ ++ ${dir}/__assets/_libs/component/_c-media.pug`,
103
- `✔ ++ ${dir}/__assets/_libs/component/_c-media-list.scss`,
104
- `✔ ++ ${dir}/__assets/_libs/component/_c-header.scss`,
105
- `✔ ++ ${dir}/__assets/_libs/component/_c-header.pug`,
106
- `✔ ++ ${dir}/__assets/_libs/component/_c-footer.scss`,
107
- `✔ ++ ${dir}/__assets/_libs/component/_c-footer.pug`,
108
- `✔ ++ ${dir}/__assets/_libs/component/_c-content-main.scss`,
109
- `✔ ++ ${dir}/__assets/_libs/component/_c-content-index.scss`,
110
- `✔ ++ ${dir}/__assets/_libs/component/_c-card.scss`,
111
- `✔ ++ ${dir}/__assets/_libs/component/_c-card.pug`,
112
- `✔ ++ ${dir}/__assets/_libs/component/_c-card-list.scss`,
272
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.pug`,
273
+ `✔ ++ ${dir}/__assets/_libs/component/c-title-page.css`,
274
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.pug`,
275
+ `✔ ++ ${dir}/__assets/_libs/component/c-pagination.css`,
276
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-sub.css`,
277
+ `✔ ++ ${dir}/__assets/_libs/component/c-page-home.css`,
278
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.pug`,
279
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-sitemap.css`,
280
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.pug`,
281
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-global.css`,
282
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.pug`,
283
+ `✔ ++ ${dir}/__assets/_libs/component/c-nav-breadcrumb.css`,
284
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.pug`,
285
+ `✔ ++ ${dir}/__assets/_libs/component/c-media.css`,
286
+ `✔ ++ ${dir}/__assets/_libs/component/c-media-list.css`,
287
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.pug`,
288
+ `✔ ++ ${dir}/__assets/_libs/component/c-header.css`,
289
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.pug`,
290
+ `✔ ++ ${dir}/__assets/_libs/component/c-footer.css`,
291
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-main.css`,
292
+ `✔ ++ ${dir}/__assets/_libs/component/c-content-index.css`,
293
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.pug`,
294
+ `✔ ++ ${dir}/__assets/_libs/component/c-card.css`,
295
+ `✔ ++ ${dir}/__assets/_libs/component/c-card-list.css`,
113
296
  `✔ ++ ${dir}/.vscode/settings.json`,
114
297
  `✔ ++ ${dir}/.vscode/extensions.json`,
298
+ `✔ ++ ${dir}/.husky/pre-commit`,
115
299
  '✔ Install dependencies : skipped',
116
300
  ]);
117
301
  });
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@d-zero/create-frontend",
3
- "version": "5.0.0-alpha.9",
3
+ "version": "5.0.0-beta.1",
4
4
  "description": "Create a new frontend project from a scaffolding template",
5
5
  "repository": "https://github.com/d-zero-dev/frontend-env.git",
6
6
  "author": "D-ZERO Co., Ltd.",
7
7
  "license": "MIT",
8
- "private": false,
9
8
  "publishConfig": {
10
9
  "access": "public"
11
10
  },
@@ -14,15 +13,16 @@
14
13
  "create-dzero-frontend": "./index.js"
15
14
  },
16
15
  "dependencies": {
17
- "@d-zero/scaffold": "5.0.0-alpha.9",
18
- "glob": "10.4.1",
19
- "i18n-js": "4.4.3",
20
- "ignore": "5.3.1",
16
+ "@d-zero/scaffold": "5.0.0-beta.1",
17
+ "glob": "11.0.3",
18
+ "i18n-js": "4.5.1",
19
+ "ignore": "7.0.5",
21
20
  "meow": "13.2.0",
22
21
  "plop": "4.0.1"
23
22
  },
24
23
  "devDependencies": {
25
- "@types/glob": "8.1.0"
24
+ "@types/glob": "8.1.0",
25
+ "execa": "9.6.0"
26
26
  },
27
- "gitHead": "27d13f24a36ea96e89789b914d4c5fcc92828879"
27
+ "gitHead": "a199bc3446a8753fb5557bf126f1b7d1716cab79"
28
28
  }
package/plopfile.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { spawn } from 'node:child_process';
2
+ import fs from 'node:fs';
2
3
  import path from 'node:path';
4
+ import { argv } from 'node:process';
3
5
 
4
6
  import { globSync } from 'glob';
5
7
  import ignore from 'ignore';
@@ -23,6 +25,9 @@ const cli = meow(
23
25
  Examples
24
26
  $ yarn create @d-zero/frontend
25
27
  $ yarn create @d-zero/frontend --type cms --dir ./my-cms --install
28
+
29
+ Note
30
+ Running the command without any options will start in interactive mode, allowing you to configure the project step-by-step.
26
31
  `,
27
32
  {
28
33
  importMeta: import.meta,
@@ -30,15 +35,21 @@ const cli = meow(
30
35
  type: {
31
36
  type: 'string',
32
37
  shortFlag: 't',
38
+ default: 'burger',
33
39
  },
34
40
  dir: {
35
41
  type: 'string',
36
42
  shortFlag: 'd',
43
+ default: '.',
37
44
  },
38
45
  install: {
39
46
  type: 'boolean',
40
47
  default: true,
41
48
  },
49
+ debug: {
50
+ type: 'boolean',
51
+ default: false,
52
+ },
42
53
  },
43
54
  },
44
55
  );
@@ -53,6 +64,8 @@ export default function (plop) {
53
64
 
54
65
  const gitignore = readFileSafe(path.resolve(scaffoldDir, '.gitignore'));
55
66
  const ignoreFiles = gitignore?.split('\n').filter(Boolean) ?? [];
67
+ const hasArgs = argv.length > 2;
68
+ const interactive = !hasArgs;
56
69
 
57
70
  const ig = ignore()
58
71
  // Ignore files in .gitignore
@@ -61,7 +74,17 @@ export default function (plop) {
61
74
  .add([
62
75
  // Test directories
63
76
  '**/*.test/**/*',
64
- ]);
77
+ // Test Files
78
+ '*.test.*',
79
+ ])
80
+ .add(
81
+ // BurgerEditor
82
+ cli.flags.type === 'burger' ? [] : ['**/bge-*', '**/bge_*'],
83
+ )
84
+ .add(
85
+ // static
86
+ cli.flags.type === 'static' ? ['**/__tmpl/**/*'] : [],
87
+ );
65
88
 
66
89
  const scaffoldFiles = ig.filter(
67
90
  globSync('**/*', {
@@ -72,9 +95,7 @@ export default function (plop) {
72
95
  );
73
96
 
74
97
  plop.setActionType('Install dependencies', (answers) => {
75
- const dest = answers['__d-zero_scaffold_dest__'] ?? cli.flags.dir ?? '.';
76
- const doInstall =
77
- answers['__d-zero_scaffold_yarn_install__'] ?? cli.flags.install ?? true;
98
+ const { dest, doInstall } = answerToConfig(answers);
78
99
 
79
100
  const { promise, resolve, reject } = Promise.withResolvers();
80
101
 
@@ -110,34 +131,43 @@ export default function (plop) {
110
131
  name: '__d-zero_project_type__',
111
132
  message: t`What's the type of project?`,
112
133
  choices: [
113
- //
114
- 'Static',
134
+ {
135
+ name: 'Static',
136
+ value: 'static',
137
+ },
115
138
  'CMS (WordPress etc.)',
116
139
  {
117
140
  name: 'CMS (baserCMS with BurgerEditor)',
118
141
  value: 'burger',
119
142
  },
120
143
  ],
121
- default: cli.flags.type ?? 'burger',
144
+ default: cli.flags.type,
122
145
  filter: (val) => val.toLowerCase(),
123
- when: !cli.flags.type,
146
+ when: interactive,
124
147
  },
125
148
  {
126
149
  type: 'input',
127
150
  name: '__d-zero_scaffold_dest__',
128
151
  message: t`Destination path`,
129
- default: '.',
130
- when: !cli.flags.type,
152
+ default: cli.flags.dir,
153
+ when: interactive,
131
154
  },
132
155
  {
133
156
  type: 'confirm',
134
157
  name: '__d-zero_scaffold_yarn_install__',
135
158
  message: t`Install dependencies with yarn?`,
136
- default: true,
137
- when: !cli.flags.type,
159
+ default: cli.flags.install,
160
+ when: interactive,
138
161
  },
139
162
  ],
140
163
  actions: function (answers) {
164
+ const config = answerToConfig(answers);
165
+
166
+ if (cli.flags.debug) {
167
+ // eslint-disable-next-line no-console
168
+ console.log(config);
169
+ }
170
+
141
171
  return [
142
172
  ...scaffoldFiles.map(
143
173
  /**
@@ -145,26 +175,43 @@ export default function (plop) {
145
175
  * @type {import('plop').AddActionConfig}
146
176
  */
147
177
  (originFile) => {
148
- const dest = answers['__d-zero_scaffold_dest__'] ?? cli.flags.dir ?? '.';
149
178
  return {
150
179
  type: 'add',
151
- path: path.resolve(dest, originFile),
180
+ path: path.resolve(config.dest, originFile),
152
181
  templateFile: path.resolve(scaffoldDir, originFile),
153
182
  transform(content) {
154
- if (originFile === 'package.json') {
155
- const nameCandidate = path.basename(path.resolve(dest));
156
- const pkg = JSON.parse(content);
157
- pkg._createdBy = `${pkg.name}@${pkg.version}`;
158
- pkg.name = nameCandidate;
159
- pkg.private = true;
160
- delete pkg.version;
161
- delete pkg.description;
162
- delete pkg.repository;
163
- delete pkg.author;
164
- delete pkg.license;
165
- delete pkg.publishConfig;
166
- delete pkg.files;
167
- content = JSON.stringify(pkg, null, '\t');
183
+ const nameCandidate = path.basename(path.resolve(config.dest));
184
+
185
+ switch (originFile) {
186
+ case 'package.json': {
187
+ const pkg = JSON.parse(content);
188
+ pkg._createdBy = `${pkg.name}@${pkg.version}`;
189
+ pkg.name = nameCandidate;
190
+ pkg.private = true;
191
+ delete pkg.version;
192
+ delete pkg.description;
193
+ delete pkg.repository;
194
+ delete pkg.author;
195
+ delete pkg.license;
196
+ delete pkg.publishConfig;
197
+ delete pkg.files;
198
+ content = JSON.stringify(pkg, null, '\t');
199
+ break;
200
+ }
201
+ case '__assets/_libs/data/blocks.cjs': {
202
+ if (config.type === 'burger') {
203
+ content = content.replace("blocks.html'", "bge-blocks.html'");
204
+ }
205
+ break;
206
+ }
207
+ case '__assets/htdocs/index.pug': {
208
+ if (config.type === 'static') {
209
+ content = fs.readFileSync(
210
+ path.resolve(scaffoldDir, '__assets/htdocs/__tmpl/000_home.pug'),
211
+ 'utf8',
212
+ );
213
+ }
214
+ }
168
215
  }
169
216
  return content;
170
217
  },
@@ -178,3 +225,15 @@ export default function (plop) {
178
225
  },
179
226
  });
180
227
  }
228
+
229
+ /**
230
+ *
231
+ * @param answers
232
+ */
233
+ function answerToConfig(answers) {
234
+ const type = answers['__d-zero_project_type__'] ?? cli.flags.type;
235
+ const dest = answers['__d-zero_scaffold_dest__'] ?? cli.flags.dir;
236
+ const doInstall = answers['__d-zero_scaffold_yarn_install__'] ?? cli.flags.install;
237
+
238
+ return { type, dest, doInstall };
239
+ }
package/read-file-safe.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import fs from 'node:fs';
2
2
 
3
+ /**
4
+ *
5
+ * @param filePath
6
+ */
3
7
  export function readFileSafe(filePath) {
4
8
  try {
5
9
  return fs.readFileSync(filePath, 'utf8');