@w5s/mrm-preset 1.0.0-alpha.18 → 1.0.0-alpha.19

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.
@@ -1 +1,11 @@
1
- @w5s/mrm-preset:build: cache hit, replaying output faa3bdd70e66c4d8
1
+ @w5s/mrm-preset:build: cache hit, replaying output b2674e19e9d29ff6
2
+ @w5s/mrm-preset:build: [build:*tsc]
3
+ @w5s/mrm-preset:build: [build:*tsc] > @w5s/mrm-preset@1.0.0-alpha.18 build:tsc
4
+ @w5s/mrm-preset:build: [build:*tsc] > tsc --noEmit --skipLibCheck
5
+ @w5s/mrm-preset:build: [build:*tsc]
6
+ @w5s/mrm-preset:build: [build:*empty]
7
+ @w5s/mrm-preset:build: [build:*empty] > @w5s/mrm-preset@1.0.0-alpha.18 build:empty
8
+ @w5s/mrm-preset:build: [build:*empty] > :
9
+ @w5s/mrm-preset:build: [build:*empty]
10
+ @w5s/mrm-preset:build: [build:*empty] npm run build:empty exited with code 0
11
+ @w5s/mrm-preset:build: [build:*tsc] npm run build:tsc exited with code 0
@@ -1,43 +1,43 @@
1
- @w5s/mrm-preset:docs: cache hit, replaying output 28c9b96eaccdecc6
2
- @w5s/mrm-preset:docs: Starting markdown-magic [ '**/*.md', '!node_modules/**' ]
3
- @w5s/mrm-preset:docs: ℹ Notice:
4
- @w5s/mrm-preset:docs: Missing transforms "BASIC_RULES","JSX_RULES" in _tester/node_modules/eslint-plugin-react/README.md
5
- @w5s/mrm-preset:docs:
6
- @w5s/mrm-preset:docs: ✔ README.md Updated
7
- @w5s/mrm-preset:docs: Transforms run
8
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=# W5s Mrm Preset _(${name})_
9
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=> ${description}&unknownTxt=
10
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[${license}][license-url] © ${author}
11
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
12
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
13
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
14
- @w5s/mrm-preset:docs:
15
- @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/mrm-preset/README.md Updated
16
- @w5s/mrm-preset:docs: Transforms run
17
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=# W5s Mrm Preset _(${name})_
18
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=> ${description}&unknownTxt=
19
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[${license}][license-url] © ${author}
20
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
21
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
22
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
23
- @w5s/mrm-preset:docs:
24
- @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/eslint-config/README.md Updated
25
- @w5s/mrm-preset:docs: Transforms run
26
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=# W5s ESLint configuration _(${name})_
27
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=> ${description}&unknownTxt=
28
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=```console\nnpm install --save-dev ${name}\n```
29
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[${license}][license-url] © ${author}
30
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
31
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
32
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
33
- @w5s/mrm-preset:docs:
34
- @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/ts-config/README.md Updated
35
- @w5s/mrm-preset:docs: Transforms run
36
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=# W5s Typescript configuration _(${name})_
37
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=> ${description}&unknownTxt=
38
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=```console\nnpm install --save-dev ${name}\n```
39
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[${license}][license-url] © ${author}
40
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
41
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
42
- @w5s/mrm-preset:docs: ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
43
- @w5s/mrm-preset:docs:
1
+ @w5s/mrm-preset:docs: cache hit, replaying output 7929426e31db918c
2
+ @w5s/mrm-preset:docs: Starting markdown-magic [ '**/*.md', '!node_modules/**' ]
3
+ @w5s/mrm-preset:docs: ℹ Notice:
4
+ @w5s/mrm-preset:docs:  Missing transforms "BASIC_RULES","JSX_RULES" in _tester/node_modules/eslint-plugin-react/README.md
5
+ @w5s/mrm-preset:docs: 
6
+ @w5s/mrm-preset:docs: ✔ README.md Updated
7
+ @w5s/mrm-preset:docs:  Transforms run
8
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=# W5s Mrm Preset _(${name})_
9
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=> ${description}&unknownTxt=
10
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[${license}][license-url] © ${author}
11
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
12
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
13
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
14
+ @w5s/mrm-preset:docs: 
15
+ @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/mrm-preset/README.md Updated
16
+ @w5s/mrm-preset:docs:  Transforms run
17
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=# W5s Mrm Preset _(${name})_
18
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=> ${description}&unknownTxt=
19
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[${license}][license-url] © ${author}
20
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
21
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
22
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
23
+ @w5s/mrm-preset:docs: 
24
+ @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/eslint-config/README.md Updated
25
+ @w5s/mrm-preset:docs:  Transforms run
26
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=# W5s ESLint configuration _(${name})_
27
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=> ${description}&unknownTxt=
28
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=```console\nnpm install --save-dev ${name}\n```
29
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[${license}][license-url] © ${author}
30
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
31
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
32
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
33
+ @w5s/mrm-preset:docs: 
34
+ @w5s/mrm-preset:docs: ✔ _tester/node_modules/@w5s/ts-config/README.md Updated
35
+ @w5s/mrm-preset:docs:  Transforms run
36
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=# W5s Typescript configuration _(${name})_
37
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=> ${description}&unknownTxt=
38
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=```console\nnpm install --save-dev ${name}\n```
39
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[${license}][license-url] © ${author}
40
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-version-svg]: https://img.shields.io/npm/v/${name}.svg?style=flat-square
41
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[package-url]: https://www.npmjs.com/package/${name}
42
+ @w5s/mrm-preset:docs:  ⁕ PKGJSON:template=[license-image]: https://img.shields.io/badge/license-${license}-green.svg?style=flat-square
43
+ @w5s/mrm-preset:docs: 
@@ -1 +1,7 @@
1
- @w5s/mrm-preset:format: cache hit, replaying output 1d31136f1b35d64c
1
+ @w5s/mrm-preset:format: cache hit, replaying output 2ccea371b5ea23ec
2
+ @w5s/mrm-preset:format: [1] : exited with code 0
3
+ @w5s/mrm-preset:format: [format:*src]
4
+ @w5s/mrm-preset:format: [format:*src] > @w5s/mrm-preset@1.0.0-alpha.18 format:src
5
+ @w5s/mrm-preset:format: [format:*src] > eslint . --fix --ext=mjs,cjs,js,jsx,ts,tsx,json
6
+ @w5s/mrm-preset:format: [format:*src]
7
+ @w5s/mrm-preset:format: [format:*src] npm run format:src exited with code 0
@@ -1 +1,7 @@
1
- @w5s/mrm-preset:lint: cache hit, replaying output 687f5b7a70c1d1ce
1
+ @w5s/mrm-preset:lint: cache hit, replaying output 22fed320b23e49fa
2
+ @w5s/mrm-preset:lint: [1] : exited with code 0
3
+ @w5s/mrm-preset:lint: [lint:*src]
4
+ @w5s/mrm-preset:lint: [lint:*src] > @w5s/mrm-preset@1.0.0-alpha.18 lint:src
5
+ @w5s/mrm-preset:lint: [lint:*src] > eslint . --ext=mjs,cjs,js,jsx,ts,tsx,json
6
+ @w5s/mrm-preset:lint: [lint:*src]
7
+ @w5s/mrm-preset:lint: [lint:*src] npm run lint:src exited with code 0
@@ -0,0 +1,2 @@
1
+ @w5s/mrm-preset:prepare: cache hit, replaying output 2a953d2da4d297c9
2
+ @w5s/mrm-preset:prepare: [0] : exited with code 0
@@ -1,20 +1,46 @@
1
- @w5s/mrm-preset:test: cache hit, replaying output 78432cf2c01c55eb
2
- @w5s/mrm-preset:test: mkdir: _tester: File exists
3
- @w5s/mrm-preset:test: Running bootstrap...
4
- @w5s/mrm-preset:test: Running alias configure...
5
- @w5s/mrm-preset:test: Running gitignore...
6
- @w5s/mrm-preset:test: Running project...
7
- @w5s/mrm-preset:test: Update package.json
8
- @w5s/mrm-preset:test: Running contributing...
9
- @w5s/mrm-preset:test: Running release...
10
- @w5s/mrm-preset:test: Running ci...
11
- @w5s/mrm-preset:test: Running lang...
12
- @w5s/mrm-preset:test: Running commitlint...
13
- @w5s/mrm-preset:test: Running editorconfig...
14
- @w5s/mrm-preset:test: Running eslint...
15
- @w5s/mrm-preset:test: Running cspell...
16
- @w5s/mrm-preset:test: Running jest...
17
- @w5s/mrm-preset:test: Update package.json
18
- @w5s/mrm-preset:test: Running renovate...
19
- @w5s/mrm-preset:test: Running githooks...
20
- @w5s/mrm-preset:test: Running postconfigure...
1
+ @w5s/mrm-preset:test: cache hit, replaying output 52d5e4f6637d08e9
2
+ @w5s/mrm-preset:test: mkdir: _tester: File exists
3
+ @w5s/mrm-preset:test: Running bootstrap...
4
+ @w5s/mrm-preset:test: Running alias configure...
5
+ @w5s/mrm-preset:test: Running gitignore...
6
+ @w5s/mrm-preset:test: Running project...
7
+ @w5s/mrm-preset:test: Update package.json
8
+ @w5s/mrm-preset:test: Uninstalling npm-run-all...
9
+ @w5s/mrm-preset:test: 
10
+ @w5s/mrm-preset:test: removed 19 packages, and audited 1391 packages in 3s
11
+ @w5s/mrm-preset:test: 
12
+ @w5s/mrm-preset:test: 143 packages are looking for funding
13
+ @w5s/mrm-preset:test:  run `npm fund` for details
14
+ @w5s/mrm-preset:test: 
15
+ @w5s/mrm-preset:test: 6 moderate severity vulnerabilities
16
+ @w5s/mrm-preset:test: 
17
+ @w5s/mrm-preset:test: To address all issues (including breaking changes), run:
18
+ @w5s/mrm-preset:test:  npm audit fix --force
19
+ @w5s/mrm-preset:test: 
20
+ @w5s/mrm-preset:test: Run `npm audit` for details.
21
+ @w5s/mrm-preset:test: Installing concurrently...
22
+ @w5s/mrm-preset:test: 
23
+ @w5s/mrm-preset:test: added 12 packages, and audited 1403 packages in 7s
24
+ @w5s/mrm-preset:test: 
25
+ @w5s/mrm-preset:test: 144 packages are looking for funding
26
+ @w5s/mrm-preset:test:  run `npm fund` for details
27
+ @w5s/mrm-preset:test: 
28
+ @w5s/mrm-preset:test: 6 moderate severity vulnerabilities
29
+ @w5s/mrm-preset:test: 
30
+ @w5s/mrm-preset:test: To address all issues (including breaking changes), run:
31
+ @w5s/mrm-preset:test:  npm audit fix --force
32
+ @w5s/mrm-preset:test: 
33
+ @w5s/mrm-preset:test: Run `npm audit` for details.
34
+ @w5s/mrm-preset:test: Running contributing...
35
+ @w5s/mrm-preset:test: Running license...
36
+ @w5s/mrm-preset:test: Running release...
37
+ @w5s/mrm-preset:test: Running ci...
38
+ @w5s/mrm-preset:test: Running lang...
39
+ @w5s/mrm-preset:test: Running commitlint...
40
+ @w5s/mrm-preset:test: Running editorconfig...
41
+ @w5s/mrm-preset:test: Running eslint...
42
+ @w5s/mrm-preset:test: Running cspell...
43
+ @w5s/mrm-preset:test: Running jest...
44
+ @w5s/mrm-preset:test: Running renovate...
45
+ @w5s/mrm-preset:test: Running githooks...
46
+ @w5s/mrm-preset:test: Running postconfigure...
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
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
+ # [1.0.0-alpha.19](https://github.com/w5s/project-config/compare/@w5s/mrm-preset@1.0.0-alpha.18...@w5s/mrm-preset@1.0.0-alpha.19) (2022-06-28)
7
+
8
+ **Note:** Version bump only for package @w5s/mrm-preset
9
+
10
+
11
+
12
+
13
+
6
14
  # [1.0.0-alpha.18](https://github.com/w5s/project-config/compare/@w5s/mrm-preset@1.0.0-alpha.17...@w5s/mrm-preset@1.0.0-alpha.18) (2022-06-23)
7
15
 
8
16
  **Note:** Version bump only for package @w5s/mrm-preset
package/config.json CHANGED
@@ -4,6 +4,7 @@
4
4
  "gitignore",
5
5
  "project",
6
6
  "contributing",
7
+ "license",
7
8
  "release",
8
9
  "ci",
9
10
  "lang",
package/core/git.js CHANGED
@@ -7,24 +7,8 @@ const block = require('./block.js');
7
7
  function remoteSync() {
8
8
  try {
9
9
  const gitConfig = ini('.git/config');
10
- const remoteURL = gitConfig.get('[remote "origin"]').url;
11
-
12
- return remoteURL
13
- ? [
14
- /**
15
- * 1. filter github URL
16
- *
17
- * @param {string} returnValue
18
- */
19
- (returnValue) => returnValue.replace(/^git@github.com:/, 'https://github.com/'),
20
- /**
21
- * 2. filter gitlab URL
22
- *
23
- * @param {string} returnValue
24
- */
25
- (returnValue) => returnValue.replace(/^git@gitlab.com:/, 'https://gitlab.com/'),
26
- ].reduce((returnValue, filter) => filter(returnValue), remoteURL)
27
- : remoteURL;
10
+ const remoteURL = gitConfig.get('remote "origin"').url.trim();
11
+ return remoteURL;
28
12
  } catch {
29
13
  // ignore error
30
14
  }
package/core/pkg.js CHANGED
@@ -13,6 +13,21 @@ const jsonFile = require('./jsonFile.js');
13
13
  */
14
14
  const emptyScript = ':';
15
15
 
16
+ /**
17
+ * @param {import('mrm-core').Json} packageFile
18
+ * @returns {'application'|'library'|'workspace'} the archetype value
19
+ */
20
+ function archetype(packageFile) {
21
+ if (hasWorkspaces(packageFile)) {
22
+ return 'workspace';
23
+ }
24
+ if (packageFile.get('private') === true || (packageFile.get('main') == null && packageFile.get('exports'))) {
25
+ return 'application';
26
+ }
27
+
28
+ return 'library';
29
+ }
30
+
16
31
  /**
17
32
  * @param {(pkg: import('mrm-core').PackageJson) => void} block
18
33
  */
@@ -93,7 +108,7 @@ function manager(packageFile) {
93
108
 
94
109
  /**
95
110
  *
96
- * @param {import('mrm-core').PackageJson} packageFile
111
+ * @param {import('mrm-core').Json} packageFile
97
112
  */
98
113
  function hasWorkspaces(packageFile) {
99
114
  return Boolean(packageFile.get('workspaces'));
@@ -143,11 +158,13 @@ function engineMinVersion(packageFile, engineVersionMap) {
143
158
  Object.keys(engineVersionMap).map((engineName) => [engineName, engineConstraint(engineName)])
144
159
  ),
145
160
  });
161
+ return packageFile.get('engines');
146
162
  }
147
163
 
148
164
  module.exports = {
149
165
  ...jsonFile,
150
166
  emptyScript,
167
+ archetype,
151
168
  script,
152
169
  manager,
153
170
  engineMinVersion,
package/core/turbo.js CHANGED
@@ -6,6 +6,7 @@ const jsonFile = require('./jsonFile.js');
6
6
  /**
7
7
  * @typedef {{
8
8
  * $schema: string,
9
+ * baseBranch?: string,
9
10
  * pipeline?: Record<string, unknown>,
10
11
  * globalDependencies?: Array<string>,
11
12
  * }} TurboConfig
package/eslint/index.js CHANGED
@@ -11,10 +11,9 @@ function createESLint({ eslintPreset: eslintPresetDefault = 'eslint:recommended'
11
11
  *
12
12
  * @param {{
13
13
  * eslintPreset: string,
14
- * eslintRules: Record<string, any>
15
14
  * }} config
16
15
  */
17
- function task({ eslintPreset, eslintRules }) {
16
+ function task({ eslintPreset }) {
18
17
  const packageFileDefault = packageJson();
19
18
  const hasWorkspaces = pkg.hasWorkspaces(packageFileDefault);
20
19
  const hasTypescript = pkg.hasDependency(packageFileDefault, 'typescript', 'dev');
@@ -59,7 +58,6 @@ function createESLint({ eslintPreset: eslintPresetDefault = 'eslint:recommended'
59
58
  update: (config) => ({
60
59
  ...config,
61
60
  extends: [eslintPreset],
62
- rules: eslintRules,
63
61
  parserOptions: {
64
62
  project: hasTypescript ? './tsconfig.json' : undefined,
65
63
  ...config.parserOptions,
@@ -121,12 +119,12 @@ function createESLint({ eslintPreset: eslintPresetDefault = 'eslint:recommended'
121
119
  });
122
120
  pkg.forEachWorkspace(({ packageFile }) => {
123
121
  pkg.script(packageFile, {
124
- name: project.lint,
122
+ name: `${project.lint}:src`,
125
123
  script: `eslint .${extOption}`,
126
124
  state: 'default',
127
125
  });
128
126
  pkg.script(packageFile, {
129
- name: project.format,
127
+ name: `${project.format}:src`,
130
128
  script: `eslint . --fix${extOption}`,
131
129
  state: 'default',
132
130
  });
@@ -166,9 +164,6 @@ function createESLint({ eslintPreset: eslintPresetDefault = 'eslint:recommended'
166
164
  message: 'Enter ESLint preset name',
167
165
  type: 'input',
168
166
  },
169
- eslintRules: {
170
- type: 'config',
171
- },
172
167
  };
173
168
 
174
169
  return task;
package/lang/index.js CHANGED
@@ -27,7 +27,7 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
27
27
  task.typescript = () => {
28
28
  const tsConfigPreset = tsConfigDefault;
29
29
  const packageFile = packageJson();
30
- const isApplication = packageFile.get('mrmConfig.packageArchetype') === 'application';
30
+ const isApplication = pkg.archetype(packageFile) === 'application';
31
31
  const hasWorkspaces = pkg.hasWorkspaces(packageFile);
32
32
  const tsConfigSettingsName = 'tsconfig.settings.json';
33
33
  const tsConfigSettings = json(tsConfigSettingsName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@w5s/mrm-preset",
3
- "version": "1.0.0-alpha.18",
3
+ "version": "1.0.0-alpha.19",
4
4
  "description": "Mrm configuration presets",
5
5
  "keywords": [
6
6
  "mrm",
@@ -13,19 +13,23 @@
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "https://github.com/w5s/project-config.git",
16
+ "url": "git@github.com:w5s/project-config.git",
17
17
  "directory": "packages/mrm-preset"
18
18
  },
19
19
  "license": "MIT",
20
20
  "author": "Julien Polo <julien.polo@gmail.com>",
21
21
  "main": "config.json",
22
22
  "scripts": {
23
- "build": "npm-run-all -p 'build:*'",
23
+ "build": "concurrently \"npm:build:*\" ",
24
24
  "build:empty": ":",
25
25
  "build:tsc": "tsc --noEmit --skipLibCheck",
26
+ "clean": "concurrently \"npm:clean:*\" \":\"",
26
27
  "docs": "md-magic --path '**/*.md' --ignore='node_modules'",
27
- "format": "eslint . --fix --ext=mjs,cjs,js,jsx,ts,tsx,json",
28
- "lint": "eslint . --ext=mjs,cjs,js,jsx,ts,tsx,json",
28
+ "format": "concurrently \"npm:format:*\" \":\"",
29
+ "format:src": "eslint . --fix --ext=mjs,cjs,js,jsx,ts,tsx,json",
30
+ "lint": "concurrently \"npm:lint:*\" \":\"",
31
+ "lint:src": "eslint . --ext=mjs,cjs,js,jsx,ts,tsx,json",
32
+ "prepare": "concurrently \"npm:prepare:*\" \":\"",
29
33
  "spellcheck": "cspell --no-progress '**'",
30
34
  "test": "mkdir _tester; cd _tester; mrm bootstrap --dir ..; mrm configure --dir .."
31
35
  },
@@ -41,11 +45,11 @@
41
45
  "mrm": "4.0.0"
42
46
  },
43
47
  "engines": {
44
- "node": ">=14.x",
48
+ "node": ">=16.x",
45
49
  "yarn": ">=1.x"
46
50
  },
47
51
  "publishConfig": {
48
52
  "access": "public"
49
53
  },
50
- "gitHead": "d6e3c3ee14c3ead509432ae962708c90342edd25"
54
+ "gitHead": "f83a12bd102dc01498ec2ea00344a0fef14f9d69"
51
55
  }
package/project/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ const { dirname } = require('node:path');
1
2
  const { packageJson, json, makeDirs } = require('mrm-core');
2
3
  const git = require('../core/git.js');
3
4
  const pkg = require('../core/pkg.js');
@@ -29,147 +30,168 @@ const turboRun = (script) => `turbo run ${script}`;
29
30
  /**
30
31
  *
31
32
  * @param {string} script
33
+ * @param {boolean} allowEmpty
32
34
  */
33
- const npmRunAll = (script) => `npm-run-all -p "${script}:*"`;
35
+ const npmRunAll = (script, allowEmpty) => `concurrently "npm:${script}:*" ${allowEmpty ? `"${pkg.emptyScript}"` : ''}`;
34
36
  function task() {
35
- const packageFile = packageJson();
37
+ const rootPackageFile = packageJson();
38
+ const rootUseWorkspace = pkg.hasWorkspaces(rootPackageFile);
39
+ const rootEngineMinVersion = Object.assign(
40
+ {
41
+ node: '>=12.x',
42
+ yarn: '>=1.x',
43
+ npm: '>=6.x',
44
+ },
45
+ mrmPackageJson.engines
46
+ );
36
47
  const gitSupported = git.hasGit();
37
- const useWorkspace = packageFile.get('mrmConfig.packageArchetype') === 'workspace';
38
- const packageManager = pkg.manager(packageFile);
48
+ const packageManager = pkg.manager(rootPackageFile);
49
+ const gitRepository = git.remoteSync();
39
50
 
40
51
  // Detect git repository
41
- pkg.value(packageFile, {
42
- path: 'repository',
43
- state: 'present',
44
- update: () => {
45
- const gitRepository = git.remoteSync();
46
- if (gitRepository) {
47
- return {
48
- type: 'git',
49
- url: gitRepository,
50
- };
51
- }
52
+ if (rootUseWorkspace) {
53
+ const dirs = pkg.listWorkspaceMatchers(rootPackageFile).map(dirname);
54
+ makeDirs(dirs);
55
+ }
52
56
 
53
- return undefined;
54
- },
55
- });
57
+ const addScripts = (/** @type {import("mrm-core").Json} */ currentPackageFile, /** @type {boolean} */ root) => {
58
+ const useWorkspace = pkg.hasWorkspaces(currentPackageFile);
56
59
 
57
- // build & clean
58
- pkg.script(packageFile, {
59
- name: project.build,
60
- script: npmRunAll(project.build),
61
- state: 'present',
62
- });
63
- pkg.script(packageFile, {
64
- name: `${project.build}:empty`,
65
- script: pkg.emptyScript,
66
- state: !useWorkspace ? 'present' : 'absent',
67
- });
68
- pkg.script(packageFile, {
69
- name: `${project.build}:packages`,
70
- script: turboRun(project.build),
71
- state: useWorkspace ? 'present' : 'absent',
72
- });
73
- pkg.script(packageFile, {
74
- name: project.clean,
75
- script: useWorkspace ? turboRun(project.clean) : pkg.emptyScript,
76
- state: useWorkspace ? 'present' : 'default',
77
- });
60
+ // build
61
+ pkg.script(currentPackageFile, {
62
+ name: project.build,
63
+ script: npmRunAll(project.build, false),
64
+ state: 'present',
65
+ });
66
+ pkg.script(currentPackageFile, {
67
+ name: `${project.build}:packages`,
68
+ script: turboRun(project.build),
69
+ state: useWorkspace ? 'present' : 'absent',
70
+ });
78
71
 
79
- // develop & auto build & load
80
- pkg.script(packageFile, {
81
- name: project.develop,
82
- script: pkg.emptyScript,
83
- state: 'default',
84
- });
72
+ // lint
73
+ pkg.script(currentPackageFile, {
74
+ name: project.lint,
75
+ script: npmRunAll(project.lint, true),
76
+ state: 'present',
77
+ });
78
+ pkg.script(currentPackageFile, {
79
+ name: project.format,
80
+ script: npmRunAll(project.format, true),
81
+ state: 'present',
82
+ });
85
83
 
86
- // lint
87
- pkg.script(packageFile, {
88
- name: project.lint,
89
- script: npmRunAll(project.lint),
90
- state: 'present',
91
- });
92
- pkg.script(packageFile, {
93
- name: `${project.lint}:empty`,
94
- script: pkg.emptyScript,
95
- state: !useWorkspace ? 'present' : 'absent',
96
- });
97
- pkg.script(packageFile, {
98
- name: project.format,
99
- script: npmRunAll(project.format),
100
- state: 'present',
101
- });
102
- pkg.script(packageFile, {
103
- name: `${project.format}:empty`,
104
- script: pkg.emptyScript,
105
- state: !useWorkspace ? 'present' : 'absent',
106
- });
84
+ // test
85
+ // pkg.script(currentPackageFile, {
86
+ // name: project.coverage,
87
+ // script: pkg.emptyScript,
88
+ // state: 'default',
89
+ // });
90
+ pkg.script(currentPackageFile, {
91
+ name: project.test,
92
+ script: useWorkspace ? npmRunAll(project.test, false) : pkg.emptyScript,
93
+ state: useWorkspace ? 'present' : 'default',
94
+ });
107
95
 
108
- // test
109
- pkg.script(packageFile, {
110
- name: project.coverage,
111
- script: pkg.emptyScript,
112
- state: 'default',
113
- });
114
- pkg.script(packageFile, {
115
- name: project.test,
116
- script: npmRunAll(project.test),
117
- state: 'present',
118
- });
119
- pkg.script(packageFile, {
120
- name: project.validate,
121
- script: `${npmRun(project.build)} && ${npmRun(project.lint)} && ${npmRun(project.test)}`,
122
- state: 'present',
123
- });
96
+ // prepare
97
+ pkg.script(currentPackageFile, {
98
+ name: project.prepare,
99
+ script: npmRunAll(project.prepare, true),
100
+ state: 'present',
101
+ });
124
102
 
125
- // code analysis
126
- pkg.script(packageFile, {
127
- name: project.codeAnalysis,
128
- script: pkg.emptyScript,
129
- state: 'default',
130
- });
103
+ // clean
104
+ pkg.script(currentPackageFile, {
105
+ name: project.clean,
106
+ script: npmRunAll(project.clean, true),
107
+ state: 'present',
108
+ });
109
+ pkg.script(currentPackageFile, {
110
+ name: `${project.clean}:packages`,
111
+ script: turboRun(project.clean),
112
+ state: useWorkspace ? 'present' : 'absent',
113
+ });
131
114
 
132
- // prepare
133
- pkg.script(packageFile, {
134
- name: project.prepare,
135
- script: npmRunAll(project.prepare),
136
- state: 'present',
137
- });
138
- pkg.script(packageFile, {
139
- name: `${project.prepare}:empty`,
140
- script: pkg.emptyScript,
141
- state: !useWorkspace ? 'present' : 'absent',
142
- });
143
- pkg.script(packageFile, {
144
- name: `${project.prepare}:packages`,
145
- script: turboRun(project.prepare),
146
- state: useWorkspace ? 'present' : 'absent',
147
- });
115
+ // Root
148
116
 
149
- // rescue
150
- pkg.script(packageFile, {
151
- name: project.rescue,
152
- script: `${gitSupported ? 'git clean -fdx' : ''};${packageManager} install`,
153
- state: 'present',
154
- });
117
+ // rescue
118
+ pkg.script(currentPackageFile, {
119
+ name: project.rescue,
120
+ script: `${gitSupported ? 'git clean -fdx' : ''};${packageManager} install`,
121
+ state: root ? 'present' : 'absent',
122
+ });
123
+
124
+ // release
125
+ pkg.script(currentPackageFile, {
126
+ name: project.release,
127
+ script: pkg.emptyScript,
128
+ state: root ? 'default' : 'absent',
129
+ });
130
+
131
+ // code analysis
132
+ pkg.script(currentPackageFile, {
133
+ name: project.codeAnalysis,
134
+ script: pkg.emptyScript,
135
+ state: root ? 'default' : 'absent',
136
+ });
137
+
138
+ // develop & auto build & load
139
+ pkg.script(currentPackageFile, {
140
+ name: project.develop,
141
+ script: pkg.emptyScript,
142
+ state: root ? 'default' : 'absent',
143
+ });
144
+ };
155
145
 
156
- // release
157
- pkg.script(packageFile, {
158
- name: project.release,
159
- script: pkg.emptyScript,
160
- state: 'default',
146
+ // eslint-disable-next-line no-shadow
147
+ pkg.withPackageJson((packageFile) => {
148
+ pkg.value(packageFile, {
149
+ path: 'repository',
150
+ state: 'present',
151
+ update: () =>
152
+ gitRepository
153
+ ? {
154
+ type: 'git',
155
+ url: gitRepository,
156
+ }
157
+ : undefined,
158
+ });
159
+
160
+ addScripts(packageFile, true);
161
+
162
+ pkg.script(packageFile, {
163
+ name: project.validate,
164
+ script: `${npmRun(project.build)} && ${npmRun(project.lint)} && ${npmRun(project.test)}`,
165
+ state: 'present',
166
+ });
167
+
168
+ // Engine
169
+ pkg.engineMinVersion(packageFile, rootEngineMinVersion);
170
+ });
171
+ pkg.forEachWorkspace((workspace) => {
172
+ pkg.value(workspace.packageFile, {
173
+ path: 'repository',
174
+ state: 'present',
175
+ update: () =>
176
+ gitRepository
177
+ ? {
178
+ type: 'git',
179
+ url: gitRepository,
180
+ directory: workspace.projectDir,
181
+ }
182
+ : undefined,
183
+ });
184
+ addScripts(workspace.packageFile, false);
161
185
  });
162
186
 
163
187
  // workspace
164
-
165
188
  const lernaConfig = json('lerna.json', {
166
- version: packageFile.get('version'),
189
+ version: rootPackageFile.get('version'),
167
190
  });
168
- if (useWorkspace) {
169
- const packages = ['packages/*'];
191
+ if (rootUseWorkspace) {
170
192
  const versionIndependent = lernaConfig.get('version') === 'independent';
171
193
  const gitmoji = true;
172
- packageFile.merge({ workspaces: { packages } });
194
+
173
195
  lernaConfig.merge({
174
196
  $schema: 'https://json.schemastore.org/lerna.json',
175
197
  command: {
@@ -184,35 +206,22 @@ function task() {
184
206
  },
185
207
  },
186
208
  npmClient: packageManager,
187
- useWorkspaces: useWorkspace,
209
+ useWorkspaces: rootUseWorkspace,
188
210
  changelogPreset: 'gitmoji-config',
189
211
  });
190
212
  lernaConfig.save();
191
- makeDirs('packages');
192
213
  } else {
193
- packageFile.unset('workspaces');
194
214
  lernaConfig.delete();
195
215
  }
196
216
 
197
- // Engine
198
- pkg.engineMinVersion(
199
- packageFile,
200
- Object.assign(
201
- {
202
- node: '>=12.x',
203
- yarn: '>=1.x',
204
- npm: '>=6.x',
205
- },
206
- mrmPackageJson.engines
207
- )
208
- );
209
- packageFile.save();
217
+ rootPackageFile.save();
210
218
 
211
219
  // Turbo config
212
220
  turbo({
213
- state: useWorkspace ? 'present' : 'absent',
221
+ state: rootUseWorkspace ? 'present' : 'absent',
214
222
  update: (_) => ({
215
223
  ..._,
224
+ baseBranch: 'origin/main',
216
225
  pipeline: {
217
226
  [project.build]: {
218
227
  dependsOn: ['^build'],
@@ -236,15 +245,21 @@ function task() {
236
245
  });
237
246
 
238
247
  // Dependencies
248
+ // clean
239
249
  npm.dependency({
240
250
  dev: true,
241
251
  name: ['npm-run-all'],
252
+ state: 'absent',
253
+ });
254
+ npm.dependency({
255
+ dev: true,
256
+ name: ['concurrently'],
242
257
  state: 'present',
243
258
  });
244
259
  npm.dependency({
245
260
  dev: true,
246
261
  name: ['lerna', 'conventional-changelog-gitmoji-config'],
247
- state: useWorkspace ? 'present' : 'absent',
262
+ state: rootUseWorkspace ? 'present' : 'absent',
248
263
  });
249
264
 
250
265
  // VSCode
package/release/index.js CHANGED
@@ -4,7 +4,7 @@ const project = require('../core/project.js');
4
4
  const { semanticRelease } = require('../core/semanticRelease.js');
5
5
 
6
6
  function task() {
7
- const useWorkspace = packageJson().get('mrmConfig.packageArchetype') === 'workspace';
7
+ const useWorkspace = pkg.hasWorkspaces(packageJson());
8
8
 
9
9
  // release
10
10
  pkg.withPackageJson((packageFile) => {
package/renovate/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const { json, packageJson } = require('mrm-core');
2
2
  const { hasGit } = require('../core/git.js');
3
+ const pkg = require('../core/pkg.js');
3
4
 
4
5
  /**
5
6
  *
@@ -19,7 +20,8 @@ function createRenovate({ renovatePresetApplication, renovatePresetLibrary }) {
19
20
  const gitSupported = hasGit();
20
21
 
21
22
  if (gitSupported) {
22
- const packageArchetype = packageJson().get('mrmConfig.packageArchetype', 'library');
23
+ const packageFile = packageJson();
24
+ const packageArchetype = pkg.archetype(packageFile);
23
25
  const renovatePresetResolved =
24
26
  renovatePreset || (packageArchetype === 'application' ? renovatePresetApplication : renovatePresetLibrary);
25
27
  const renovateFile = json('renovate.json');
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Julien Polo
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.