@w5s/mrm-preset 1.0.0-alpha.2 → 1.0.0-alpha.21
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/.turbo/turbo-build.log +11 -0
- package/.turbo/turbo-docs.log +43 -0
- package/.turbo/turbo-format.log +7 -0
- package/.turbo/turbo-lint.log +7 -0
- package/.turbo/turbo-prepare.log +2 -0
- package/.turbo/turbo-test.log +19 -0
- package/CHANGELOG.md +237 -0
- package/README.md +1 -1
- package/bootstrap/index.js +43 -42
- package/ci/_gitlab/AutoDevopsInclude.gitlab-ci.yml +2 -0
- package/ci/github.js +47 -0
- package/ci/gitlab.js +1 -1
- package/ci/index.js +7 -2
- package/commitlint/index.js +5 -2
- package/config.json +1 -0
- package/contributing/index.js +1 -1
- package/contributing/templates/CODE_OF_CONDUCT.md +3 -4
- package/core/block.js +2 -3
- package/core/commitlint.js +3 -3
- package/core/cspell.js +1 -10
- package/core/eslint.js +25 -6
- package/{gitignore/template.js → core/git.ignore.js} +32 -6
- package/core/git.js +21 -18
- package/core/githooks.js +8 -7
- package/core/githubCI.js +56 -0
- package/core/jest.js +50 -69
- package/core/jsonFile.js +8 -7
- package/core/lintStaged.js +3 -3
- package/core/npm.js +52 -15
- package/core/pkg.js +92 -14
- package/core/project.js +6 -0
- package/core/semanticRelease.js +4 -4
- package/core/turbo.js +57 -0
- package/core/typedoc.js +7 -20
- package/core/vscode.js +1 -1
- package/cspell/index.js +20 -10
- package/editorconfig/index.js +3 -1
- package/eslint/index.js +81 -32
- package/githooks/index.js +47 -56
- package/gitignore/index.js +5 -22
- package/jest/index.js +13 -17
- package/lang/.eslintrc.json +4 -1
- package/lang/index.js +22 -19
- package/licenses/index.js +26 -0
- package/package.json +17 -12
- package/postconfigure/index.js +3 -3
- package/project/index.js +217 -156
- package/release/index.js +5 -5
- package/renovate/index.js +7 -5
- package/tsconfig.json +2 -1
- package/core/workspace.js +0 -6
package/gitignore/index.js
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { gitIgnoreTemplate } = require('../core/git.js');
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* @param {string} templatePath
|
|
6
|
-
* @param {Array<string>} flags
|
|
7
|
-
*/
|
|
8
|
-
function createGitIgnore(templatePath, flags) {
|
|
9
|
-
function task() {
|
|
10
|
-
// eslint-disable-next-line global-require, import/no-dynamic-require
|
|
11
|
-
const templateMap = require(templatePath);
|
|
12
|
-
|
|
13
|
-
flags.forEach((flag) => {
|
|
14
|
-
if (templateMap[flag]) {
|
|
15
|
-
gitIgnore(flag, templateMap[flag]);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
task.description = 'Adds Gitignore file';
|
|
21
|
-
|
|
22
|
-
return task;
|
|
3
|
+
function task() {
|
|
4
|
+
gitIgnoreTemplate(['macOS', 'NodeJS', 'VisualStudioCode']);
|
|
23
5
|
}
|
|
6
|
+
task.description = 'Adds Gitignore file';
|
|
24
7
|
|
|
25
|
-
module.exports =
|
|
8
|
+
module.exports = task;
|
package/jest/index.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
const { jest } = require('../core/jest');
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
task.description = 'Setup Jest';
|
|
14
|
-
task.parameters = {};
|
|
15
|
-
|
|
16
|
-
return task;
|
|
1
|
+
const { jest } = require('../core/jest.js');
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
function task() {
|
|
7
|
+
jest({
|
|
8
|
+
state: 'present',
|
|
9
|
+
});
|
|
17
10
|
}
|
|
18
11
|
|
|
19
|
-
|
|
12
|
+
task.description = 'Setup Jest';
|
|
13
|
+
task.parameters = {};
|
|
14
|
+
|
|
15
|
+
module.exports = task;
|
package/lang/.eslintrc.json
CHANGED
package/lang/index.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
const
|
|
1
|
+
const path = require('node:path');
|
|
2
2
|
const { json, file, template, packageJson } = require('mrm-core');
|
|
3
|
-
const npm = require('../core/npm');
|
|
4
|
-
const { gitIgnore } = require('../core/git');
|
|
5
|
-
const project = require('../core/project');
|
|
6
|
-
const { eslintIgnore } = require('../core/eslint');
|
|
7
|
-
const {
|
|
8
|
-
const
|
|
9
|
-
const pkg = require('../core/pkg');
|
|
3
|
+
const npm = require('../core/npm.js');
|
|
4
|
+
const { gitIgnore } = require('../core/git.js');
|
|
5
|
+
const project = require('../core/project.js');
|
|
6
|
+
const { eslintIgnore } = require('../core/eslint.js');
|
|
7
|
+
const { typedoc } = require('../core/typedoc.js');
|
|
8
|
+
const pkg = require('../core/pkg.js');
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
*
|
|
13
12
|
* @param {{
|
|
14
13
|
* language: 'typescript',
|
|
15
|
-
* tsConfig: string
|
|
14
|
+
* tsConfig: string
|
|
16
15
|
* }} config
|
|
17
16
|
*/
|
|
18
17
|
function createLang({ language: languageDefault = 'typescript', tsConfig: tsConfigDefault }) {
|
|
19
18
|
/**
|
|
20
19
|
*
|
|
21
20
|
* @param {{
|
|
22
|
-
* language: 'typescript'
|
|
21
|
+
* language: 'typescript'
|
|
23
22
|
* }} config
|
|
24
23
|
*/
|
|
25
24
|
function task({ language }) {
|
|
@@ -27,8 +26,9 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
|
|
|
27
26
|
}
|
|
28
27
|
task.typescript = () => {
|
|
29
28
|
const tsConfigPreset = tsConfigDefault;
|
|
30
|
-
const
|
|
31
|
-
const
|
|
29
|
+
const packageFile = packageJson();
|
|
30
|
+
const isApplication = pkg.archetype(packageFile) === 'application';
|
|
31
|
+
const hasWorkspaces = pkg.hasWorkspaces(packageFile);
|
|
32
32
|
const tsConfigSettingsName = 'tsconfig.settings.json';
|
|
33
33
|
const tsConfigSettings = json(tsConfigSettingsName);
|
|
34
34
|
const tsConfig = json('tsconfig.json');
|
|
@@ -37,12 +37,14 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
|
|
|
37
37
|
gitIgnore('Typescript', ['lib/', '*.tsbuildinfo', 'typings/']);
|
|
38
38
|
eslintIgnore(['lib/']);
|
|
39
39
|
|
|
40
|
+
// const excludeList = ['**/*.test.*', '**/*.spec.*', '**/__tests__/**'];
|
|
40
41
|
if (hasWorkspaces) {
|
|
41
42
|
tsConfig
|
|
42
43
|
.unset('compilerOptions.rootDir')
|
|
43
44
|
.unset('compilerOptions.outDir')
|
|
44
45
|
.unset('include')
|
|
45
46
|
.merge({
|
|
47
|
+
$schema: 'https://json.schemastore.org/tsconfig.json',
|
|
46
48
|
extends: `./${tsConfigSettingsName}`,
|
|
47
49
|
})
|
|
48
50
|
.save();
|
|
@@ -52,6 +54,7 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
|
|
|
52
54
|
} else {
|
|
53
55
|
tsConfigSettings
|
|
54
56
|
.merge({
|
|
57
|
+
$schema: 'https://json.schemastore.org/tsconfig.json',
|
|
55
58
|
compilerOptions: {},
|
|
56
59
|
extends: tsConfigPreset,
|
|
57
60
|
})
|
|
@@ -63,23 +66,23 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
|
|
|
63
66
|
rootDir: './src',
|
|
64
67
|
},
|
|
65
68
|
extends: `./${tsConfigSettingsName}`,
|
|
66
|
-
include: ['
|
|
69
|
+
include: ['src'],
|
|
67
70
|
})
|
|
68
71
|
.save();
|
|
69
72
|
|
|
70
73
|
// Create default index
|
|
71
|
-
const templateDir = join(__dirname, 'templates');
|
|
74
|
+
const templateDir = path.join(__dirname, 'templates');
|
|
72
75
|
if (!file('src/index.ts').exists()) {
|
|
73
|
-
template('src/index.ts', join(templateDir, 'index.ts')).apply().save();
|
|
76
|
+
template('src/index.ts', path.join(templateDir, 'index.ts')).apply().save();
|
|
74
77
|
}
|
|
75
78
|
if (!file('src/index.spec.ts').exists()) {
|
|
76
|
-
template('src/index.spec.ts', join(templateDir, 'index.spec.ts')).apply().save();
|
|
79
|
+
template('src/index.spec.ts', path.join(templateDir, 'index.spec.ts')).apply().save();
|
|
77
80
|
}
|
|
78
81
|
}
|
|
79
82
|
// Application setup
|
|
80
|
-
pkg.withPackageJson((
|
|
83
|
+
pkg.withPackageJson((_packageFile) => {
|
|
81
84
|
if (isApplication) {
|
|
82
|
-
pkg.script(
|
|
85
|
+
pkg.script(_packageFile, {
|
|
83
86
|
name: project.develop,
|
|
84
87
|
script:
|
|
85
88
|
"NODE_ENV=development ts-node-dev --require='tsconfig-paths/register' -r dotenv/config -- ./src/index.ts dotenv_config_path=.env",
|
|
@@ -101,7 +104,7 @@ function createLang({ language: languageDefault = 'typescript', tsConfig: tsConf
|
|
|
101
104
|
});
|
|
102
105
|
|
|
103
106
|
typedoc({
|
|
104
|
-
state: 'present',
|
|
107
|
+
state: isApplication ? 'absent' : 'present',
|
|
105
108
|
update: (config) => ({
|
|
106
109
|
// Default values
|
|
107
110
|
tsconfig: 'tsconfig.json',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const { packageJson } = require('mrm-core');
|
|
2
|
+
const pkg = require('../core/pkg.js');
|
|
3
|
+
const jsonFile = require('../core/jsonFile.js');
|
|
4
|
+
|
|
5
|
+
function task() {
|
|
6
|
+
pkg.withPackageJson((packageFile) => {
|
|
7
|
+
jsonFile.value(packageFile, {
|
|
8
|
+
path: 'license',
|
|
9
|
+
state: 'present',
|
|
10
|
+
default: 'UNLICENSED',
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
const license = packageJson().get('license');
|
|
14
|
+
|
|
15
|
+
pkg.forEachWorkspace(({ packageFile }) => {
|
|
16
|
+
jsonFile.value(packageFile, {
|
|
17
|
+
path: 'license',
|
|
18
|
+
state: 'present',
|
|
19
|
+
default: license,
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
task.description = 'Setup License';
|
|
25
|
+
task.parameters = {};
|
|
26
|
+
module.exports = task;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@w5s/mrm-preset",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.21",
|
|
4
4
|
"description": "Mrm configuration presets",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mrm",
|
|
@@ -13,37 +13,42 @@
|
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "
|
|
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
|
|
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": "
|
|
28
|
-
"
|
|
29
|
-
"
|
|
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:*\" \":\"",
|
|
33
|
+
"spellcheck": "cspell --no-progress '**'",
|
|
34
|
+
"test": "mkdir _tester; cd _tester; mrm bootstrap --dir ..; mrm configure --dir .."
|
|
30
35
|
},
|
|
31
36
|
"dependencies": {
|
|
32
37
|
"debug": "^4.3.3",
|
|
33
|
-
"
|
|
38
|
+
"glob": "^8.0.3",
|
|
39
|
+
"mrm-core": "^7.0.0",
|
|
34
40
|
"semver-intersect": "^1.4.0",
|
|
35
|
-
"sync-directory": "^
|
|
41
|
+
"sync-directory": "^5.0.0"
|
|
36
42
|
},
|
|
37
43
|
"devDependencies": {
|
|
38
44
|
"@types/debug": "^4.1.7",
|
|
39
|
-
"mrm": "
|
|
45
|
+
"mrm": "4.0.0"
|
|
40
46
|
},
|
|
41
47
|
"engines": {
|
|
42
|
-
"node": ">=
|
|
43
|
-
"yarn": ">=1.x"
|
|
48
|
+
"node": ">=16.0.0"
|
|
44
49
|
},
|
|
45
50
|
"publishConfig": {
|
|
46
51
|
"access": "public"
|
|
47
52
|
},
|
|
48
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "524f252acd9eba4c34b5ae0850bd6670b31db429"
|
|
49
54
|
}
|
package/postconfigure/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const { spawnSync } = require('child_process');
|
|
1
|
+
const { spawnSync } = require('node:child_process');
|
|
2
2
|
const { packageJson } = require('mrm-core');
|
|
3
|
-
const project = require('../core/project');
|
|
4
|
-
const pkg = require('../core/pkg');
|
|
3
|
+
const project = require('../core/project.js');
|
|
4
|
+
const pkg = require('../core/pkg.js');
|
|
5
5
|
|
|
6
6
|
function task() {
|
|
7
7
|
const packageFile = packageJson();
|