@langri-sha/projen-project 0.7.0 → 0.8.0
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/CHANGELOG.json +84 -1
- package/CHANGELOG.md +24 -2
- package/lib/index.d.ts +31 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +131 -44
- package/lib/index.js.map +1 -1
- package/lib/lib/index.d.ts +2 -0
- package/lib/lib/index.d.ts.map +1 -0
- package/lib/lib/index.js +2 -0
- package/lib/lib/index.js.map +1 -0
- package/lib/lib/projenrc.d.ts +13 -0
- package/lib/lib/projenrc.d.ts.map +1 -0
- package/lib/lib/projenrc.js +17 -0
- package/lib/lib/projenrc.js.map +1 -0
- package/package.json +9 -9
- package/src/index.ts +176 -50
- package/src/lib/index.ts +1 -0
- package/src/lib/projenrc.ts +34 -0
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,90 @@
|
|
|
2
2
|
"name": "@langri-sha/projen-project",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Tue, 21 May 2024 05:21:31 GMT",
|
|
6
|
+
"version": "0.8.0",
|
|
7
|
+
"tag": "@langri-sha/projen-project_v0.8.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "email not defined",
|
|
12
|
+
"package": "@langri-sha/projen-project",
|
|
13
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
14
|
+
"comment": "chore(deps): chore(deps): update dependency projen to v0.81.13"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"author": "email not defined",
|
|
18
|
+
"package": "@langri-sha/projen-project",
|
|
19
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
20
|
+
"comment": "chore(deps): chore(deps): update dependency projen to v0.81.15"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"author": "filip.dupanovic@gmail.com",
|
|
24
|
+
"package": "@langri-sha/projen-project",
|
|
25
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
26
|
+
"comment": "fix(project): Transpile sources only for default task"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"author": "filip.dupanovic@gmail.com",
|
|
30
|
+
"package": "@langri-sha/projen-project",
|
|
31
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
32
|
+
"comment": "fix(project): Correct Renovate dependency matching"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"author": "filip.dupanovic@gmail.com",
|
|
36
|
+
"package": "@langri-sha/projen-project",
|
|
37
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
38
|
+
"comment": "fix(projen-project): Lint only package modules"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"author": "filip.dupanovic@gmail.com",
|
|
42
|
+
"package": "@langri-sha/projen-project",
|
|
43
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
44
|
+
"comment": "fix(project): Add looser dependency matching"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"minor": [
|
|
48
|
+
{
|
|
49
|
+
"author": "filip.dupanovic@gmail.com",
|
|
50
|
+
"package": "@langri-sha/projen-project",
|
|
51
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
52
|
+
"comment": "feat(projen): Add component for Beacbhall support"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"author": "filip.dupanovic@gmail.com",
|
|
56
|
+
"package": "@langri-sha/projen-project",
|
|
57
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
58
|
+
"comment": "feat(project): Add stub projen configuration file"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"author": "filip.dupanovic@gmail.com",
|
|
62
|
+
"package": "@langri-sha/projen-project",
|
|
63
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
64
|
+
"comment": "feat(project): Upgrade PNPM with Renovate"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"author": "filip.dupanovic@gmail.com",
|
|
68
|
+
"package": "@langri-sha/projen-project",
|
|
69
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
70
|
+
"comment": "feat(project): Add support for Node.js packages"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"author": "filip.dupanovic@gmail.com",
|
|
74
|
+
"package": "@langri-sha/projen-project",
|
|
75
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
76
|
+
"comment": "feat(project): Match deps in modules with Renovate"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"author": "filip.dupanovic@gmail.com",
|
|
80
|
+
"package": "@langri-sha/projen-project",
|
|
81
|
+
"commit": "f95709138a43b934997a15555d3e42655a02bee3",
|
|
82
|
+
"comment": "feat(project): Add support for subprojects"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"date": "Wed, 15 May 2024 06:47:18 GMT",
|
|
6
89
|
"version": "0.7.0",
|
|
7
90
|
"tag": "@langri-sha/projen-project_v0.7.0",
|
|
8
91
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
# Change Log - @langri-sha/projen-project
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Tue, 21 May 2024 05:21:31 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.8.0
|
|
8
|
+
|
|
9
|
+
Tue, 21 May 2024 05:21:31 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- feat(projen): Add component for Beacbhall support (filip.dupanovic@gmail.com)
|
|
14
|
+
- feat(project): Add stub projen configuration file (filip.dupanovic@gmail.com)
|
|
15
|
+
- feat(project): Upgrade PNPM with Renovate (filip.dupanovic@gmail.com)
|
|
16
|
+
- feat(project): Add support for Node.js packages (filip.dupanovic@gmail.com)
|
|
17
|
+
- feat(project): Match deps in modules with Renovate (filip.dupanovic@gmail.com)
|
|
18
|
+
- feat(project): Add support for subprojects (filip.dupanovic@gmail.com)
|
|
19
|
+
|
|
20
|
+
### Patches
|
|
21
|
+
|
|
22
|
+
- chore(deps): chore(deps): update dependency projen to v0.81.13 (email not defined)
|
|
23
|
+
- chore(deps): chore(deps): update dependency projen to v0.81.15 (email not defined)
|
|
24
|
+
- fix(project): Transpile sources only for default task (filip.dupanovic@gmail.com)
|
|
25
|
+
- fix(project): Correct Renovate dependency matching (filip.dupanovic@gmail.com)
|
|
26
|
+
- fix(projen-project): Lint only package modules (filip.dupanovic@gmail.com)
|
|
27
|
+
- fix(project): Add looser dependency matching (filip.dupanovic@gmail.com)
|
|
28
|
+
|
|
7
29
|
## 0.7.0
|
|
8
30
|
|
|
9
|
-
Wed, 15 May 2024 06:
|
|
31
|
+
Wed, 15 May 2024 06:47:18 GMT
|
|
10
32
|
|
|
11
33
|
### Minor changes
|
|
12
34
|
|
package/lib/index.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { Project as BaseProject, type ProjectOptions as BaseProjectOptions } from 'projen';
|
|
2
|
-
import { type BeachballConfig } from 'beachball';
|
|
1
|
+
import { Project as BaseProject, type ProjectOptions as BaseProjectOptions, javascript } from 'projen';
|
|
3
2
|
import { type LintSynthesizedOptions } from '@langri-sha/projen-lint-synthesized';
|
|
4
|
-
import { type EditorConfigOptions } from '@langri-sha/projen-editorconfig';
|
|
5
|
-
import { type CodeownersOptions } from '@langri-sha/projen-codeowners';
|
|
6
|
-
import { type RenovateOptions } from '@langri-sha/projen-renovate';
|
|
7
|
-
import { type HuskyOptions } from '@langri-sha/projen-husky';
|
|
3
|
+
import { EditorConfig, type EditorConfigOptions } from '@langri-sha/projen-editorconfig';
|
|
4
|
+
import { Codeowners, type CodeownersOptions } from '@langri-sha/projen-codeowners';
|
|
5
|
+
import { Renovate, type RenovateOptions } from '@langri-sha/projen-renovate';
|
|
6
|
+
import { Husky, type HuskyOptions } from '@langri-sha/projen-husky';
|
|
8
7
|
import { TypeScriptConfig, type TypeScriptConfigOptions } from '@langri-sha/projen-typescript-config';
|
|
8
|
+
import { Beachball, BeachballOptions } from '@langri-sha/projen-beachball';
|
|
9
|
+
import { ProjenrcFile } from './lib/index.js';
|
|
10
|
+
export * from '@langri-sha/projen-typescript-config';
|
|
9
11
|
export interface ProjectOptions extends Omit<BaseProjectOptions, 'renovatebot' | 'renovatebotOptions'> {
|
|
10
|
-
|
|
12
|
+
beachballOptions?: BeachballOptions;
|
|
11
13
|
codeownersOptions?: CodeownersOptions;
|
|
12
14
|
/**
|
|
13
15
|
* EditorConfig options.
|
|
@@ -19,13 +21,35 @@ export interface ProjectOptions extends Omit<BaseProjectOptions, 'renovatebot' |
|
|
|
19
21
|
huskyOptions?: HuskyOptions;
|
|
20
22
|
renovateOptions?: RenovateOptions;
|
|
21
23
|
lintSynthesizedOptions?: LintSynthesizedOptions;
|
|
24
|
+
/**
|
|
25
|
+
* Package configuration options.
|
|
26
|
+
*/
|
|
27
|
+
package?: javascript.NodePackageOptions;
|
|
28
|
+
/**
|
|
29
|
+
* TypeScript configuration options.
|
|
30
|
+
*/
|
|
22
31
|
typeScriptConfigOptions?: TypeScriptConfigOptions;
|
|
23
32
|
withTerraform?: boolean;
|
|
24
33
|
workspaces?: string[];
|
|
25
34
|
}
|
|
26
35
|
export declare class Project extends BaseProject {
|
|
27
36
|
#private;
|
|
37
|
+
beachball?: Beachball;
|
|
38
|
+
codeowners?: Codeowners;
|
|
39
|
+
editorConfig?: EditorConfig;
|
|
40
|
+
husky?: Husky;
|
|
41
|
+
package?: javascript.NodePackage;
|
|
42
|
+
projenrc?: ProjenrcFile;
|
|
43
|
+
renovate?: Renovate;
|
|
28
44
|
typeScriptConfig?: TypeScriptConfig;
|
|
29
45
|
constructor(options: ProjectOptions);
|
|
46
|
+
/**
|
|
47
|
+
* Add a subproject.
|
|
48
|
+
*/
|
|
49
|
+
addSubproject(projectOptions: ProjectOptions): Project;
|
|
50
|
+
/**
|
|
51
|
+
* Find a project by it's name, e.g. `@acme/some`.
|
|
52
|
+
*/
|
|
53
|
+
findSubproject(name: string): Project;
|
|
30
54
|
}
|
|
31
55
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,cAAc,IAAI,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,cAAc,IAAI,kBAAkB,EAEzC,UAAU,EACX,MAAM,QAAQ,CAAA;AAIf,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC7B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,cAAc,sCAAsC,CAAA;AAEpD,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,oBAAoB,CAAC;IAItE,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAKnC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAErC;;OAEG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IAEzC;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAK3B,eAAe,CAAC,EAAE,eAAe,CAAA;IAKjC,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAA;IAEvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IAKjD,aAAa,CAAC,EAAE,OAAO,CAAA;IAKvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,qBAAa,OAAQ,SAAQ,WAAW;;IACtC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,OAAO,CAAC,EAAE,UAAU,CAAC,WAAW,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;gBAEvB,OAAO,EAAE,cAAc;IAiCnC;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,cAAc;IAO5C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CA2NtC"}
|
package/lib/index.js
CHANGED
|
@@ -3,8 +3,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
3
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
|
-
var _Project_instances, _Project_configureBeachball, _Project_configureCodeowners,
|
|
7
|
-
import { Project as BaseProject,
|
|
6
|
+
var _Project_instances, _Project_configureBeachball, _Project_configureCodeowners, _Project_configureEditorConfig, _Project_configureHusky, _Project_configureLintSynthesized, _Project_configurePackage, _Project_configureProjenrc, _Project_configureRenovate, _Project_configureTypeScript, _Project_createPnpmWorkspaces;
|
|
7
|
+
import { Project as BaseProject, YamlFile, javascript, } from 'projen';
|
|
8
8
|
import * as R from 'ramda';
|
|
9
9
|
import { LintSynthesized, } from '@langri-sha/projen-lint-synthesized';
|
|
10
10
|
import { EditorConfig, } from '@langri-sha/projen-editorconfig';
|
|
@@ -12,6 +12,9 @@ import { Codeowners, } from '@langri-sha/projen-codeowners';
|
|
|
12
12
|
import { Renovate } from '@langri-sha/projen-renovate';
|
|
13
13
|
import { Husky } from '@langri-sha/projen-husky';
|
|
14
14
|
import { TypeScriptConfig, } from '@langri-sha/projen-typescript-config';
|
|
15
|
+
import { Beachball } from '@langri-sha/projen-beachball';
|
|
16
|
+
import { ProjenrcFile } from './lib/index.js';
|
|
17
|
+
export * from '@langri-sha/projen-typescript-config';
|
|
15
18
|
export class Project extends BaseProject {
|
|
16
19
|
constructor(options) {
|
|
17
20
|
super({
|
|
@@ -27,22 +30,56 @@ export class Project extends BaseProject {
|
|
|
27
30
|
this.tasks.removeTask('post-compile');
|
|
28
31
|
this.tasks.removeTask('pre-compile');
|
|
29
32
|
this.tasks.removeTask('watch');
|
|
33
|
+
if (!this.parent) {
|
|
34
|
+
this.tasks.removeTask('install');
|
|
35
|
+
this.tasks.removeTask('install:ci');
|
|
36
|
+
}
|
|
37
|
+
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configurePackage).call(this, options);
|
|
30
38
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureTypeScript).call(this, options);
|
|
31
39
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureBeachball).call(this, options);
|
|
32
40
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureCodeowners).call(this, options);
|
|
33
|
-
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureDefaultTask).call(this);
|
|
34
41
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureEditorConfig).call(this, options);
|
|
35
42
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureHusky).call(this, options);
|
|
36
43
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureLintSynthesized).call(this, options);
|
|
44
|
+
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureProjenrc).call(this);
|
|
37
45
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_configureRenovate).call(this, options);
|
|
38
46
|
__classPrivateFieldGet(this, _Project_instances, "m", _Project_createPnpmWorkspaces).call(this, options);
|
|
39
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Add a subproject.
|
|
50
|
+
*/
|
|
51
|
+
addSubproject(projectOptions) {
|
|
52
|
+
return new Project({
|
|
53
|
+
parent: this,
|
|
54
|
+
...projectOptions,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find a project by it's name, e.g. `@acme/some`.
|
|
59
|
+
*/
|
|
60
|
+
findSubproject(name) {
|
|
61
|
+
const subprojects = [];
|
|
62
|
+
const addSubproject = (project) => {
|
|
63
|
+
for (const subproject of project.subprojects) {
|
|
64
|
+
subprojects.push(subproject);
|
|
65
|
+
if (subproject.subprojects.length) {
|
|
66
|
+
addSubproject(subproject);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
addSubproject(this.root);
|
|
71
|
+
const result = subprojects.find((subproject) => subproject.name === name);
|
|
72
|
+
if (result instanceof Project) {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
throw new Error(`Cannot find subproject ${name}`);
|
|
76
|
+
}
|
|
40
77
|
}
|
|
41
|
-
_Project_instances = new WeakSet(), _Project_configureBeachball = function _Project_configureBeachball({
|
|
42
|
-
if (!
|
|
78
|
+
_Project_instances = new WeakSet(), _Project_configureBeachball = function _Project_configureBeachball({ beachballOptions }) {
|
|
79
|
+
if (!beachballOptions || this.parent) {
|
|
43
80
|
return;
|
|
44
81
|
}
|
|
45
|
-
const options = deepMerge(
|
|
82
|
+
const options = deepMerge(beachballOptions, {
|
|
46
83
|
branch: 'origin/main',
|
|
47
84
|
gitTags: false,
|
|
48
85
|
ignorePatterns: [
|
|
@@ -53,28 +90,16 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
|
|
|
53
90
|
'node_modules/',
|
|
54
91
|
],
|
|
55
92
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
marker: true,
|
|
59
|
-
});
|
|
60
|
-
for (const line of [
|
|
61
|
-
`/** @type {import('beachball').BeachballConfig} */`,
|
|
62
|
-
`module.exports = ${JSON.stringify(options, null, 2)}`,
|
|
63
|
-
]) {
|
|
64
|
-
file.addLine(line);
|
|
65
|
-
}
|
|
93
|
+
this.beachball = new Beachball(this, options);
|
|
94
|
+
this.package?.addDevDeps('beachball@2.43.1');
|
|
66
95
|
this.typeScriptConfig?.addFile('beachball.config.js');
|
|
67
96
|
}, _Project_configureCodeowners = function _Project_configureCodeowners({ codeownersOptions }) {
|
|
68
97
|
if (!codeownersOptions) {
|
|
69
98
|
return;
|
|
70
99
|
}
|
|
71
|
-
new Codeowners(this, codeownersOptions);
|
|
72
|
-
}, _Project_configureDefaultTask = function _Project_configureDefaultTask() {
|
|
73
|
-
this.tasks
|
|
74
|
-
.tryFind('default')
|
|
75
|
-
?.exec(`node --loader ts-node/esm .projenrc.mts`);
|
|
100
|
+
this.codeowners = new Codeowners(this, codeownersOptions);
|
|
76
101
|
}, _Project_configureEditorConfig = function _Project_configureEditorConfig({ editorConfigOptions }) {
|
|
77
|
-
if (!editorConfigOptions) {
|
|
102
|
+
if (!editorConfigOptions || this.parent) {
|
|
78
103
|
return;
|
|
79
104
|
}
|
|
80
105
|
const defaults = {
|
|
@@ -90,19 +115,47 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
|
|
|
90
115
|
indent_style: 'tab',
|
|
91
116
|
},
|
|
92
117
|
};
|
|
93
|
-
new EditorConfig(this, deepMerge(editorConfigOptions ?? {}, defaults));
|
|
118
|
+
this.editorConfig = new EditorConfig(this, deepMerge(editorConfigOptions ?? {}, defaults));
|
|
94
119
|
}, _Project_configureHusky = function _Project_configureHusky({ huskyOptions }) {
|
|
95
|
-
if (!huskyOptions) {
|
|
120
|
+
if (!huskyOptions || this.parent) {
|
|
96
121
|
return;
|
|
97
122
|
}
|
|
98
|
-
new Husky(this, huskyOptions);
|
|
123
|
+
this.husky = new Husky(this, huskyOptions);
|
|
124
|
+
this.package?.addDevDeps('husky@9.0.11');
|
|
125
|
+
this.package?.setScript('prepare', 'husky');
|
|
126
|
+
this.tryFindObjectFile('package.json')?.addDeletionOverride('pnpm');
|
|
99
127
|
}, _Project_configureLintSynthesized = function _Project_configureLintSynthesized({ lintSynthesizedOptions }) {
|
|
100
128
|
new LintSynthesized(this, lintSynthesizedOptions ?? {
|
|
129
|
+
'package.json': 'pnpx sort-package-json',
|
|
101
130
|
'*.{js,jsx,ts,tsx}': 'pnpm eslint --fix',
|
|
102
131
|
'*': 'pnpm prettier --write --ignore-unknown',
|
|
103
132
|
});
|
|
133
|
+
}, _Project_configurePackage = function _Project_configurePackage({ package: pkg }) {
|
|
134
|
+
if (!pkg) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const defaults = {
|
|
138
|
+
entrypoint: 'src/index.ts',
|
|
139
|
+
packageManager: javascript.NodePackageManager.PNPM,
|
|
140
|
+
minNodeVersion: '20.12.0',
|
|
141
|
+
};
|
|
142
|
+
this.package = new javascript.NodePackage(this, deepMerge(defaults, pkg));
|
|
143
|
+
if (!this.parent) {
|
|
144
|
+
this.package.addDevDeps('@langri-sha/projen-project@*');
|
|
145
|
+
this.package.addDevDeps('projen@0.81.15');
|
|
146
|
+
}
|
|
147
|
+
this.package.removeScript('start');
|
|
148
|
+
this.package.removeScript('test');
|
|
149
|
+
if (this.parent) {
|
|
150
|
+
this.package.removeScript('default');
|
|
151
|
+
}
|
|
152
|
+
}, _Project_configureProjenrc = function _Project_configureProjenrc() {
|
|
153
|
+
if (this.parent) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.projenrc = new ProjenrcFile(this, {});
|
|
104
157
|
}, _Project_configureRenovate = function _Project_configureRenovate({ renovateOptions }) {
|
|
105
|
-
if (!renovateOptions) {
|
|
158
|
+
if (!renovateOptions || this.parent) {
|
|
106
159
|
return;
|
|
107
160
|
}
|
|
108
161
|
const defaults = {
|
|
@@ -110,18 +163,52 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
|
|
|
110
163
|
extends: ['config:recommended'],
|
|
111
164
|
labels: ['dependencies'],
|
|
112
165
|
reviewersFromCodeOwners: true,
|
|
166
|
+
customManagers: [
|
|
167
|
+
{
|
|
168
|
+
customType: 'regex',
|
|
169
|
+
datasourceTemplate: 'npm',
|
|
170
|
+
fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
|
|
171
|
+
matchStrings: [
|
|
172
|
+
"\\.(?<depType>addDep|addDevDep|addPeerDep)\\('(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'\\)",
|
|
173
|
+
],
|
|
174
|
+
depTypeTemplate: "{{#if (equals depType 'addDevDep')}}devDependencies{{else if (equals depType 'addPeerDep')}}peerDependencies{{else}}dependencies{{/if}}",
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
customType: 'regex',
|
|
178
|
+
datasourceTemplate: 'npm',
|
|
179
|
+
fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
|
|
180
|
+
matchStrings: ["pnpm@(?<currentValue>[^']+)"],
|
|
181
|
+
depNameTemplate: 'pnpm',
|
|
182
|
+
depTypeTemplate: 'dependencies',
|
|
183
|
+
},
|
|
184
|
+
],
|
|
113
185
|
};
|
|
114
|
-
new Renovate(this, deepMerge(defaults, renovateOptions));
|
|
115
|
-
}, _Project_configureTypeScript = function _Project_configureTypeScript({ typeScriptConfigOptions }) {
|
|
186
|
+
this.renovate = new Renovate(this, deepMerge(defaults, renovateOptions));
|
|
187
|
+
}, _Project_configureTypeScript = function _Project_configureTypeScript({ parent, typeScriptConfigOptions }) {
|
|
116
188
|
if (!typeScriptConfigOptions) {
|
|
117
189
|
return;
|
|
118
190
|
}
|
|
119
|
-
const defaults =
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
191
|
+
const defaults = parent
|
|
192
|
+
? {
|
|
193
|
+
config: {
|
|
194
|
+
extends: '@langri-sha/tsconfig/project.json',
|
|
195
|
+
compilerOptions: {
|
|
196
|
+
baseUrl: '.',
|
|
197
|
+
outDir: '.tsbuild',
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
}
|
|
201
|
+
: {
|
|
202
|
+
config: {
|
|
203
|
+
extends: '@langri-sha/tsconfig',
|
|
204
|
+
},
|
|
205
|
+
};
|
|
124
206
|
this.typeScriptConfig = new TypeScriptConfig(this, deepMerge(defaults, typeScriptConfigOptions));
|
|
207
|
+
if (!this.parent) {
|
|
208
|
+
this.package?.addDevDeps('typescript@5.4.5');
|
|
209
|
+
this.package?.addDevDeps('ts-node@10.9.2');
|
|
210
|
+
}
|
|
211
|
+
this.package?.addDevDeps('@langri-sha/tsconfig@*');
|
|
125
212
|
}, _Project_createPnpmWorkspaces = function _Project_createPnpmWorkspaces({ workspaces }) {
|
|
126
213
|
if (!workspaces) {
|
|
127
214
|
return;
|
|
@@ -134,10 +221,11 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
|
|
|
134
221
|
},
|
|
135
222
|
});
|
|
136
223
|
};
|
|
137
|
-
const getGitIgnoreOptions = ({ huskyOptions, typeScriptConfigOptions, withTerraform, ...options }) =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
224
|
+
const getGitIgnoreOptions = ({ huskyOptions, typeScriptConfigOptions, withTerraform, parent, gitIgnoreOptions, ...options }) => parent
|
|
225
|
+
? gitIgnoreOptions
|
|
226
|
+
: {
|
|
227
|
+
ignorePatterns: [
|
|
228
|
+
...`
|
|
141
229
|
.*
|
|
142
230
|
!.babelrc
|
|
143
231
|
!.dockerignore
|
|
@@ -148,7 +236,6 @@ const getGitIgnoreOptions = ({ huskyOptions, typeScriptConfigOptions, withTerraf
|
|
|
148
236
|
!.npmignore
|
|
149
237
|
!.openssl
|
|
150
238
|
!.prettierignore
|
|
151
|
-
!.projenrc*
|
|
152
239
|
${withTerraform ? '!.terraform.lock.hcl' : ''}
|
|
153
240
|
*.db
|
|
154
241
|
*.log
|
|
@@ -160,11 +247,11 @@ const getGitIgnoreOptions = ({ huskyOptions, typeScriptConfigOptions, withTerraf
|
|
|
160
247
|
${options.workspaces?.map((workspace) => `${workspace}/lib/`).join('\n') ?? ''}
|
|
161
248
|
node_modules/
|
|
162
249
|
`
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
250
|
+
.split('\n')
|
|
251
|
+
.map((pattern) => pattern.trim())
|
|
252
|
+
.filter((pattern) => pattern.length > 0),
|
|
253
|
+
...(gitIgnoreOptions?.ignorePatterns ?? []),
|
|
254
|
+
],
|
|
255
|
+
};
|
|
169
256
|
const deepMerge = R.mergeDeepWith(R.concat);
|
|
170
257
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,OAAO,IAAI,WAAW,EAEtB,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
package/lib/lib/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProjenrcFile as BaseProjenrcFile, Project } from 'projen';
|
|
2
|
+
export interface ProjenrcOptions {
|
|
3
|
+
/**
|
|
4
|
+
* The name of the projenrc file.
|
|
5
|
+
* @default ".projenrc.mts"
|
|
6
|
+
*/
|
|
7
|
+
readonly filename?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ProjenrcFile extends BaseProjenrcFile {
|
|
10
|
+
readonly filePath: string;
|
|
11
|
+
constructor(project: Project, { filename }: ProjenrcOptions);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=projenrc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projenrc.d.ts","sourceRoot":"","sources":["../../src/lib/projenrc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,OAAO,EAAc,MAAM,QAAQ,CAAA;AAE9E,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,SAAyB,QAAQ,EAAE,MAAM,CAAA;gBAGvC,OAAO,EAAE,OAAO,EAChB,EAAE,QAA0B,EAAE,EAAE,eAAe;CAkBlD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ProjenrcFile as BaseProjenrcFile, SampleFile } from 'projen';
|
|
2
|
+
export class ProjenrcFile extends BaseProjenrcFile {
|
|
3
|
+
constructor(project, { filename = '.projenrc.mts' }) {
|
|
4
|
+
super(project);
|
|
5
|
+
this.filePath = filename;
|
|
6
|
+
this.project.defaultTask?.exec(`node --loader ts-node/esm/transpile-only ${filename}`);
|
|
7
|
+
new SampleFile(project, filename, {
|
|
8
|
+
contents: `import { Project } from '@langri-sha/projen-project'
|
|
9
|
+
|
|
10
|
+
const project = new Project()
|
|
11
|
+
|
|
12
|
+
project.synth()
|
|
13
|
+
`,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=projenrc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projenrc.js","sourceRoot":"","sources":["../../src/lib/projenrc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAW,UAAU,EAAE,MAAM,QAAQ,CAAA;AAU9E,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IAGhD,YACE,OAAgB,EAChB,EAAE,QAAQ,GAAG,eAAe,EAAmB;QAE/C,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAC5B,4CAA4C,QAAQ,EAAE,CACvD,CAAA;QAED,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE;YAChC,QAAQ,EAAE;;;;;OAKT;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langri-sha/projen-project",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
"prepublishOnly": "rm -rf lib; tsc --project tsconfig.build.json"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@langri-sha/projen-
|
|
12
|
-
"@langri-sha/projen-
|
|
13
|
-
"@langri-sha/projen-
|
|
14
|
-
"@langri-sha/projen-
|
|
15
|
-
"@langri-sha/projen-
|
|
16
|
-
"@langri-sha/projen-
|
|
17
|
-
"
|
|
11
|
+
"@langri-sha/projen-beachball": "0.1.0",
|
|
12
|
+
"@langri-sha/projen-codeowners": "0.2.3",
|
|
13
|
+
"@langri-sha/projen-editorconfig": "0.3.4",
|
|
14
|
+
"@langri-sha/projen-husky": "0.1.3",
|
|
15
|
+
"@langri-sha/projen-lint-synthesized": "0.2.5",
|
|
16
|
+
"@langri-sha/projen-renovate": "0.2.3",
|
|
17
|
+
"@langri-sha/projen-typescript-config": "0.2.1",
|
|
18
18
|
"ramda": "0.30.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@langri-sha/jest-test": "0.7.1",
|
|
22
22
|
"@langri-sha/tsconfig": "0.9.0",
|
|
23
23
|
"@types/ramda": "0.30.0",
|
|
24
|
-
"projen": "0.81.
|
|
24
|
+
"projen": "0.81.15"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"projen": "^0.81.1",
|
package/src/index.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Project as BaseProject,
|
|
3
3
|
type ProjectOptions as BaseProjectOptions,
|
|
4
|
-
TextFile,
|
|
5
4
|
YamlFile,
|
|
5
|
+
javascript,
|
|
6
6
|
} from 'projen'
|
|
7
7
|
|
|
8
8
|
import * as R from 'ramda'
|
|
9
|
-
import { type BeachballConfig } from 'beachball'
|
|
10
9
|
|
|
11
10
|
import {
|
|
12
11
|
LintSynthesized,
|
|
@@ -26,13 +25,18 @@ import {
|
|
|
26
25
|
TypeScriptConfig,
|
|
27
26
|
type TypeScriptConfigOptions,
|
|
28
27
|
} from '@langri-sha/projen-typescript-config'
|
|
28
|
+
import { Beachball, BeachballOptions } from '@langri-sha/projen-beachball'
|
|
29
|
+
|
|
30
|
+
import { ProjenrcFile } from './lib/index.js'
|
|
31
|
+
|
|
32
|
+
export * from '@langri-sha/projen-typescript-config'
|
|
29
33
|
|
|
30
34
|
export interface ProjectOptions
|
|
31
35
|
extends Omit<BaseProjectOptions, 'renovatebot' | 'renovatebotOptions'> {
|
|
32
36
|
/*
|
|
33
37
|
* Pass in to set up Beachball.
|
|
34
38
|
*/
|
|
35
|
-
|
|
39
|
+
beachballOptions?: BeachballOptions
|
|
36
40
|
|
|
37
41
|
/*
|
|
38
42
|
* Pass in to set up Beachball.
|
|
@@ -59,8 +63,13 @@ export interface ProjectOptions
|
|
|
59
63
|
*/
|
|
60
64
|
lintSynthesizedOptions?: LintSynthesizedOptions
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
*
|
|
66
|
+
/**
|
|
67
|
+
* Package configuration options.
|
|
68
|
+
*/
|
|
69
|
+
package?: javascript.NodePackageOptions
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* TypeScript configuration options.
|
|
64
73
|
*/
|
|
65
74
|
typeScriptConfigOptions?: TypeScriptConfigOptions
|
|
66
75
|
|
|
@@ -76,6 +85,13 @@ export interface ProjectOptions
|
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
export class Project extends BaseProject {
|
|
88
|
+
beachball?: Beachball
|
|
89
|
+
codeowners?: Codeowners
|
|
90
|
+
editorConfig?: EditorConfig
|
|
91
|
+
husky?: Husky
|
|
92
|
+
package?: javascript.NodePackage
|
|
93
|
+
projenrc?: ProjenrcFile
|
|
94
|
+
renovate?: Renovate
|
|
79
95
|
typeScriptConfig?: TypeScriptConfig
|
|
80
96
|
|
|
81
97
|
constructor(options: ProjectOptions) {
|
|
@@ -93,24 +109,67 @@ export class Project extends BaseProject {
|
|
|
93
109
|
this.tasks.removeTask('pre-compile')
|
|
94
110
|
this.tasks.removeTask('watch')
|
|
95
111
|
|
|
112
|
+
if (!this.parent) {
|
|
113
|
+
this.tasks.removeTask('install')
|
|
114
|
+
this.tasks.removeTask('install:ci')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
this.#configurePackage(options)
|
|
96
118
|
this.#configureTypeScript(options)
|
|
97
119
|
|
|
98
120
|
this.#configureBeachball(options)
|
|
99
121
|
this.#configureCodeowners(options)
|
|
100
|
-
this.#configureDefaultTask()
|
|
101
122
|
this.#configureEditorConfig(options)
|
|
102
123
|
this.#configureHusky(options)
|
|
103
124
|
this.#configureLintSynthesized(options)
|
|
125
|
+
this.#configureProjenrc()
|
|
104
126
|
this.#configureRenovate(options)
|
|
105
127
|
this.#createPnpmWorkspaces(options)
|
|
106
128
|
}
|
|
107
129
|
|
|
108
|
-
|
|
109
|
-
|
|
130
|
+
/**
|
|
131
|
+
* Add a subproject.
|
|
132
|
+
*/
|
|
133
|
+
addSubproject(projectOptions: ProjectOptions) {
|
|
134
|
+
return new Project({
|
|
135
|
+
parent: this,
|
|
136
|
+
...projectOptions,
|
|
137
|
+
})
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Find a project by it's name, e.g. `@acme/some`.
|
|
142
|
+
*/
|
|
143
|
+
findSubproject(name: string): Project {
|
|
144
|
+
const subprojects: Array<BaseProject> = []
|
|
145
|
+
|
|
146
|
+
const addSubproject = (project: BaseProject) => {
|
|
147
|
+
for (const subproject of project.subprojects) {
|
|
148
|
+
subprojects.push(subproject)
|
|
149
|
+
|
|
150
|
+
if (subproject.subprojects.length) {
|
|
151
|
+
addSubproject(subproject)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
addSubproject(this.root)
|
|
157
|
+
|
|
158
|
+
const result = subprojects.find((subproject) => subproject.name === name)
|
|
159
|
+
|
|
160
|
+
if (result instanceof Project) {
|
|
161
|
+
return result
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
throw new Error(`Cannot find subproject ${name}`)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#configureBeachball({ beachballOptions }: ProjectOptions) {
|
|
168
|
+
if (!beachballOptions || this.parent) {
|
|
110
169
|
return
|
|
111
170
|
}
|
|
112
171
|
|
|
113
|
-
const options = deepMerge(
|
|
172
|
+
const options = deepMerge(beachballOptions, {
|
|
114
173
|
branch: 'origin/main',
|
|
115
174
|
gitTags: false,
|
|
116
175
|
ignorePatterns: [
|
|
@@ -122,18 +181,9 @@ export class Project extends BaseProject {
|
|
|
122
181
|
],
|
|
123
182
|
})
|
|
124
183
|
|
|
125
|
-
|
|
126
|
-
readonly: true,
|
|
127
|
-
marker: true,
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
for (const line of [
|
|
131
|
-
`/** @type {import('beachball').BeachballConfig} */`,
|
|
132
|
-
`module.exports = ${JSON.stringify(options, null, 2)}`,
|
|
133
|
-
]) {
|
|
134
|
-
file.addLine(line)
|
|
135
|
-
}
|
|
184
|
+
this.beachball = new Beachball(this, options)
|
|
136
185
|
|
|
186
|
+
this.package?.addDevDeps('beachball@2.43.1')
|
|
137
187
|
this.typeScriptConfig?.addFile('beachball.config.js')
|
|
138
188
|
}
|
|
139
189
|
|
|
@@ -142,17 +192,11 @@ export class Project extends BaseProject {
|
|
|
142
192
|
return
|
|
143
193
|
}
|
|
144
194
|
|
|
145
|
-
new Codeowners(this, codeownersOptions)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
#configureDefaultTask() {
|
|
149
|
-
this.tasks
|
|
150
|
-
.tryFind('default')
|
|
151
|
-
?.exec(`node --loader ts-node/esm .projenrc.mts`)
|
|
195
|
+
this.codeowners = new Codeowners(this, codeownersOptions)
|
|
152
196
|
}
|
|
153
197
|
|
|
154
198
|
#configureEditorConfig({ editorConfigOptions }: ProjectOptions) {
|
|
155
|
-
if (!editorConfigOptions) {
|
|
199
|
+
if (!editorConfigOptions || this.parent) {
|
|
156
200
|
return
|
|
157
201
|
}
|
|
158
202
|
|
|
@@ -170,29 +214,71 @@ export class Project extends BaseProject {
|
|
|
170
214
|
},
|
|
171
215
|
}
|
|
172
216
|
|
|
173
|
-
new EditorConfig(
|
|
217
|
+
this.editorConfig = new EditorConfig(
|
|
218
|
+
this,
|
|
219
|
+
deepMerge(editorConfigOptions ?? {}, defaults),
|
|
220
|
+
)
|
|
174
221
|
}
|
|
175
222
|
|
|
176
223
|
#configureHusky({ huskyOptions }: ProjectOptions) {
|
|
177
|
-
if (!huskyOptions) {
|
|
224
|
+
if (!huskyOptions || this.parent) {
|
|
178
225
|
return
|
|
179
226
|
}
|
|
180
227
|
|
|
181
|
-
new Husky(this, huskyOptions)
|
|
228
|
+
this.husky = new Husky(this, huskyOptions)
|
|
229
|
+
|
|
230
|
+
this.package?.addDevDeps('husky@9.0.11')
|
|
231
|
+
this.package?.setScript('prepare', 'husky')
|
|
232
|
+
this.tryFindObjectFile('package.json')?.addDeletionOverride('pnpm')
|
|
182
233
|
}
|
|
183
234
|
|
|
184
235
|
#configureLintSynthesized({ lintSynthesizedOptions }: ProjectOptions) {
|
|
185
236
|
new LintSynthesized(
|
|
186
237
|
this,
|
|
187
238
|
lintSynthesizedOptions ?? {
|
|
239
|
+
'package.json': 'pnpx sort-package-json',
|
|
188
240
|
'*.{js,jsx,ts,tsx}': 'pnpm eslint --fix',
|
|
189
241
|
'*': 'pnpm prettier --write --ignore-unknown',
|
|
190
242
|
},
|
|
191
243
|
)
|
|
192
244
|
}
|
|
193
245
|
|
|
246
|
+
#configurePackage({ package: pkg }: ProjectOptions) {
|
|
247
|
+
if (!pkg) {
|
|
248
|
+
return
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const defaults: javascript.NodePackageOptions = {
|
|
252
|
+
entrypoint: 'src/index.ts',
|
|
253
|
+
packageManager: javascript.NodePackageManager.PNPM,
|
|
254
|
+
minNodeVersion: '20.12.0',
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
this.package = new javascript.NodePackage(this, deepMerge(defaults, pkg))
|
|
258
|
+
|
|
259
|
+
if (!this.parent) {
|
|
260
|
+
this.package.addDevDeps('@langri-sha/projen-project@*')
|
|
261
|
+
this.package.addDevDeps('projen@0.81.15')
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
this.package.removeScript('start')
|
|
265
|
+
this.package.removeScript('test')
|
|
266
|
+
|
|
267
|
+
if (this.parent) {
|
|
268
|
+
this.package.removeScript('default')
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
#configureProjenrc() {
|
|
273
|
+
if (this.parent) {
|
|
274
|
+
return
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
this.projenrc = new ProjenrcFile(this, {})
|
|
278
|
+
}
|
|
279
|
+
|
|
194
280
|
#configureRenovate({ renovateOptions }: ProjectOptions) {
|
|
195
|
-
if (!renovateOptions) {
|
|
281
|
+
if (!renovateOptions || this.parent) {
|
|
196
282
|
return
|
|
197
283
|
}
|
|
198
284
|
|
|
@@ -201,26 +287,63 @@ export class Project extends BaseProject {
|
|
|
201
287
|
extends: ['config:recommended'],
|
|
202
288
|
labels: ['dependencies'],
|
|
203
289
|
reviewersFromCodeOwners: true,
|
|
290
|
+
customManagers: [
|
|
291
|
+
{
|
|
292
|
+
customType: 'regex',
|
|
293
|
+
datasourceTemplate: 'npm',
|
|
294
|
+
fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
|
|
295
|
+
matchStrings: [
|
|
296
|
+
"\\.(?<depType>addDep|addDevDep|addPeerDep)\\('(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'\\)",
|
|
297
|
+
],
|
|
298
|
+
depTypeTemplate:
|
|
299
|
+
"{{#if (equals depType 'addDevDep')}}devDependencies{{else if (equals depType 'addPeerDep')}}peerDependencies{{else}}dependencies{{/if}}",
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
customType: 'regex',
|
|
303
|
+
datasourceTemplate: 'npm',
|
|
304
|
+
fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
|
|
305
|
+
matchStrings: ["pnpm@(?<currentValue>[^']+)"],
|
|
306
|
+
depNameTemplate: 'pnpm',
|
|
307
|
+
depTypeTemplate: 'dependencies',
|
|
308
|
+
},
|
|
309
|
+
],
|
|
204
310
|
}
|
|
205
311
|
|
|
206
|
-
new Renovate(this, deepMerge(defaults, renovateOptions))
|
|
312
|
+
this.renovate = new Renovate(this, deepMerge(defaults, renovateOptions))
|
|
207
313
|
}
|
|
208
314
|
|
|
209
|
-
#configureTypeScript({ typeScriptConfigOptions }: ProjectOptions) {
|
|
315
|
+
#configureTypeScript({ parent, typeScriptConfigOptions }: ProjectOptions) {
|
|
210
316
|
if (!typeScriptConfigOptions) {
|
|
211
317
|
return
|
|
212
318
|
}
|
|
213
319
|
|
|
214
|
-
const defaults: TypeScriptConfigOptions =
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
320
|
+
const defaults: TypeScriptConfigOptions = parent
|
|
321
|
+
? {
|
|
322
|
+
config: {
|
|
323
|
+
extends: '@langri-sha/tsconfig/project.json',
|
|
324
|
+
compilerOptions: {
|
|
325
|
+
baseUrl: '.',
|
|
326
|
+
outDir: '.tsbuild',
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
}
|
|
330
|
+
: {
|
|
331
|
+
config: {
|
|
332
|
+
extends: '@langri-sha/tsconfig',
|
|
333
|
+
},
|
|
334
|
+
}
|
|
219
335
|
|
|
220
336
|
this.typeScriptConfig = new TypeScriptConfig(
|
|
221
337
|
this,
|
|
222
338
|
deepMerge(defaults, typeScriptConfigOptions),
|
|
223
339
|
)
|
|
340
|
+
|
|
341
|
+
if (!this.parent) {
|
|
342
|
+
this.package?.addDevDeps('typescript@5.4.5')
|
|
343
|
+
this.package?.addDevDeps('ts-node@10.9.2')
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
this.package?.addDevDeps('@langri-sha/tsconfig@*')
|
|
224
347
|
}
|
|
225
348
|
|
|
226
349
|
#createPnpmWorkspaces({ workspaces }: ProjectOptions) {
|
|
@@ -242,11 +365,15 @@ const getGitIgnoreOptions = ({
|
|
|
242
365
|
huskyOptions,
|
|
243
366
|
typeScriptConfigOptions,
|
|
244
367
|
withTerraform,
|
|
368
|
+
parent,
|
|
369
|
+
gitIgnoreOptions,
|
|
245
370
|
...options
|
|
246
|
-
}: ProjectOptions): ProjectOptions['gitIgnoreOptions'] =>
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
371
|
+
}: ProjectOptions): ProjectOptions['gitIgnoreOptions'] =>
|
|
372
|
+
parent
|
|
373
|
+
? gitIgnoreOptions
|
|
374
|
+
: {
|
|
375
|
+
ignorePatterns: [
|
|
376
|
+
...`
|
|
250
377
|
.*
|
|
251
378
|
!.babelrc
|
|
252
379
|
!.dockerignore
|
|
@@ -257,7 +384,6 @@ const getGitIgnoreOptions = ({
|
|
|
257
384
|
!.npmignore
|
|
258
385
|
!.openssl
|
|
259
386
|
!.prettierignore
|
|
260
|
-
!.projenrc*
|
|
261
387
|
${withTerraform ? '!.terraform.lock.hcl' : ''}
|
|
262
388
|
*.db
|
|
263
389
|
*.log
|
|
@@ -269,11 +395,11 @@ const getGitIgnoreOptions = ({
|
|
|
269
395
|
${options.workspaces?.map((workspace) => `${workspace}/lib/`).join('\n') ?? ''}
|
|
270
396
|
node_modules/
|
|
271
397
|
`
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
398
|
+
.split('\n')
|
|
399
|
+
.map((pattern) => pattern.trim())
|
|
400
|
+
.filter((pattern) => pattern.length > 0),
|
|
401
|
+
...(gitIgnoreOptions?.ignorePatterns ?? []),
|
|
402
|
+
],
|
|
403
|
+
}
|
|
278
404
|
|
|
279
405
|
const deepMerge = R.mergeDeepWith(R.concat)
|
package/src/lib/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './projenrc.js'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ProjenrcFile as BaseProjenrcFile, Project, SampleFile } from 'projen'
|
|
2
|
+
|
|
3
|
+
export interface ProjenrcOptions {
|
|
4
|
+
/**
|
|
5
|
+
* The name of the projenrc file.
|
|
6
|
+
* @default ".projenrc.mts"
|
|
7
|
+
*/
|
|
8
|
+
readonly filename?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class ProjenrcFile extends BaseProjenrcFile {
|
|
12
|
+
public override readonly filePath: string
|
|
13
|
+
|
|
14
|
+
constructor(
|
|
15
|
+
project: Project,
|
|
16
|
+
{ filename = '.projenrc.mts' }: ProjenrcOptions,
|
|
17
|
+
) {
|
|
18
|
+
super(project)
|
|
19
|
+
|
|
20
|
+
this.filePath = filename
|
|
21
|
+
this.project.defaultTask?.exec(
|
|
22
|
+
`node --loader ts-node/esm/transpile-only ${filename}`,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
new SampleFile(project, filename, {
|
|
26
|
+
contents: `import { Project } from '@langri-sha/projen-project'
|
|
27
|
+
|
|
28
|
+
const project = new Project()
|
|
29
|
+
|
|
30
|
+
project.synth()
|
|
31
|
+
`,
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
}
|