@langri-sha/projen-project 0.8.0 → 0.9.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 CHANGED
@@ -2,7 +2,75 @@
2
2
  "name": "@langri-sha/projen-project",
3
3
  "entries": [
4
4
  {
5
- "date": "Tue, 21 May 2024 05:21:31 GMT",
5
+ "date": "Sat, 25 May 2024 03:25:02 GMT",
6
+ "version": "0.9.0",
7
+ "tag": "@langri-sha/projen-project_v0.9.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "filip.dupanovic@gmail.com",
12
+ "package": "@langri-sha/projen-project",
13
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
14
+ "comment": "feat(projen): Add support for creating licenses"
15
+ },
16
+ {
17
+ "author": "filip.dupanovic@gmail.com",
18
+ "package": "@langri-sha/projen-project",
19
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
20
+ "comment": "feat(project): Add support for configuring Jest"
21
+ },
22
+ {
23
+ "author": "filip.dupanovic@gmail.com",
24
+ "package": "@langri-sha/projen-project",
25
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
26
+ "comment": "feat(project): Match project dependencies with Renovate"
27
+ },
28
+ {
29
+ "author": "filip.dupanovic@gmail.com",
30
+ "package": "@langri-sha/projen-project",
31
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
32
+ "comment": "feat(project): Add projenrc file to subprojects"
33
+ },
34
+ {
35
+ "author": "filip.dupanovic@gmail.com",
36
+ "package": "@langri-sha/projen-project",
37
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
38
+ "comment": "feat(project): Add support for NPM ignore files"
39
+ }
40
+ ],
41
+ "patch": [
42
+ {
43
+ "author": "filip.dupanovic@gmail.com",
44
+ "package": "@langri-sha/projen-project",
45
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
46
+ "comment": "fix(project): Update documentation URL"
47
+ },
48
+ {
49
+ "author": "filip.dupanovic@gmail.com",
50
+ "package": "@langri-sha/projen-project",
51
+ "commit": "1b0960cb6ed3918c64dbc464cb2baa83f5dc9bdd",
52
+ "comment": "fix(project): Update matching Renovate dependencies"
53
+ }
54
+ ]
55
+ }
56
+ },
57
+ {
58
+ "date": "Tue, 21 May 2024 07:47:40 GMT",
59
+ "version": "0.8.1",
60
+ "tag": "@langri-sha/projen-project_v0.8.1",
61
+ "comments": {
62
+ "patch": [
63
+ {
64
+ "author": "filip.dupanovic@gmail.com",
65
+ "package": "@langri-sha/projen-project",
66
+ "commit": "5620ce2f2f89b683bc0dba64ed440cfa14425c12",
67
+ "comment": "fix(project): Remove default tasks for subprojects"
68
+ }
69
+ ]
70
+ }
71
+ },
72
+ {
73
+ "date": "Tue, 21 May 2024 05:22:50 GMT",
6
74
  "version": "0.8.0",
7
75
  "tag": "@langri-sha/projen-project_v0.8.0",
8
76
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,37 @@
1
1
  # Change Log - @langri-sha/projen-project
2
2
 
3
- This log was last generated on Tue, 21 May 2024 05:21:31 GMT and should not be manually modified.
3
+ This log was last generated on Sat, 25 May 2024 03:25:02 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.9.0
8
+
9
+ Sat, 25 May 2024 03:25:02 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - feat(projen): Add support for creating licenses (filip.dupanovic@gmail.com)
14
+ - feat(project): Add support for configuring Jest (filip.dupanovic@gmail.com)
15
+ - feat(project): Match project dependencies with Renovate (filip.dupanovic@gmail.com)
16
+ - feat(project): Add projenrc file to subprojects (filip.dupanovic@gmail.com)
17
+ - feat(project): Add support for NPM ignore files (filip.dupanovic@gmail.com)
18
+
19
+ ### Patches
20
+
21
+ - fix(project): Update documentation URL (filip.dupanovic@gmail.com)
22
+ - fix(project): Update matching Renovate dependencies (filip.dupanovic@gmail.com)
23
+
24
+ ## 0.8.1
25
+
26
+ Tue, 21 May 2024 07:47:40 GMT
27
+
28
+ ### Patches
29
+
30
+ - fix(project): Remove default tasks for subprojects (filip.dupanovic@gmail.com)
31
+
7
32
  ## 0.8.0
8
33
 
9
- Tue, 21 May 2024 05:21:31 GMT
34
+ Tue, 21 May 2024 05:22:50 GMT
10
35
 
11
36
  ### Minor changes
12
37
 
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Project as BaseProject, type ProjectOptions as BaseProjectOptions, javascript } from 'projen';
1
+ import { Project as BaseProject, type ProjectOptions as BaseProjectOptions, IgnoreFile, IgnoreFileOptions, javascript } from 'projen';
2
2
  import { type LintSynthesizedOptions } from '@langri-sha/projen-lint-synthesized';
3
3
  import { EditorConfig, type EditorConfigOptions } from '@langri-sha/projen-editorconfig';
4
4
  import { Codeowners, type CodeownersOptions } from '@langri-sha/projen-codeowners';
@@ -6,7 +6,9 @@ import { Renovate, type RenovateOptions } from '@langri-sha/projen-renovate';
6
6
  import { Husky, type HuskyOptions } from '@langri-sha/projen-husky';
7
7
  import { TypeScriptConfig, type TypeScriptConfigOptions } from '@langri-sha/projen-typescript-config';
8
8
  import { Beachball, BeachballOptions } from '@langri-sha/projen-beachball';
9
+ import { License } from '@langri-sha/projen-license';
9
10
  import { ProjenrcFile } from './lib/index.js';
11
+ import { JestConfig, JestConfigOptions } from '@langri-sha/projen-jest-config';
10
12
  export * from '@langri-sha/projen-typescript-config';
11
13
  export interface ProjectOptions extends Omit<BaseProjectOptions, 'renovatebot' | 'renovatebotOptions'> {
12
14
  beachballOptions?: BeachballOptions;
@@ -19,12 +21,27 @@ export interface ProjectOptions extends Omit<BaseProjectOptions, 'renovatebot' |
19
21
  * Husky options.
20
22
  */
21
23
  huskyOptions?: HuskyOptions;
22
- renovateOptions?: RenovateOptions;
24
+ /**
25
+ * Configures Jest, when provided.
26
+ */
27
+ jestConfigOptions?: JestConfigOptions;
23
28
  lintSynthesizedOptions?: LintSynthesizedOptions;
24
29
  /**
25
30
  * Package configuration options.
26
31
  */
27
- package?: javascript.NodePackageOptions;
32
+ package?: {
33
+ /**
34
+ * License copyright year.
35
+ *
36
+ * @default "Current full year"
37
+ */
38
+ copyrightYear?: string;
39
+ } & javascript.NodePackageOptions;
40
+ /**
41
+ * Pass in to configure NPM ignore options.
42
+ */
43
+ npmIgnoreOptions?: IgnoreFileOptions;
44
+ renovateOptions?: RenovateOptions;
28
45
  /**
29
46
  * TypeScript configuration options.
30
47
  */
@@ -38,6 +55,9 @@ export declare class Project extends BaseProject {
38
55
  codeowners?: Codeowners;
39
56
  editorConfig?: EditorConfig;
40
57
  husky?: Husky;
58
+ jestConfig?: JestConfig;
59
+ license?: License;
60
+ npmIgnore?: IgnoreFile;
41
61
  package?: javascript.NodePackage;
42
62
  projenrc?: ProjenrcFile;
43
63
  renovate?: Renovate;
@@ -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,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"}
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,EACzC,UAAU,EACV,iBAAiB,EAEjB,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;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAE9E,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;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAKrC,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;;;WAIG;QACH,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,GAAG,UAAU,CAAC,kBAAkB,CAAA;IAEjC;;OAEG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAA;IAKpC,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;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,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,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;IAqCnC;;OAEG;IACH,aAAa,CAAC,cAAc,EAAE,cAAc;IAO5C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAwRtC"}
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, _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';
6
+ var _Project_instances, _Project_configureBeachball, _Project_configureCodeowners, _Project_configureEditorConfig, _Project_configureHusky, _Project_configureJestConfig, _Project_configureLicense, _Project_configureLintSynthesized, _Project_configureNpmIgnore, _Project_configurePackage, _Project_configureProjenrc, _Project_configureRenovate, _Project_configureTypeScript, _Project_createPnpmWorkspaces;
7
+ import { Project as BaseProject, IgnoreFile, 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';
@@ -13,7 +13,9 @@ 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
15
  import { Beachball } from '@langri-sha/projen-beachball';
16
+ import { License } from '@langri-sha/projen-license';
16
17
  import { ProjenrcFile } from './lib/index.js';
18
+ import { JestConfig } from '@langri-sha/projen-jest-config';
17
19
  export * from '@langri-sha/projen-typescript-config';
18
20
  export class Project extends BaseProject {
19
21
  constructor(options) {
@@ -30,18 +32,22 @@ export class Project extends BaseProject {
30
32
  this.tasks.removeTask('post-compile');
31
33
  this.tasks.removeTask('pre-compile');
32
34
  this.tasks.removeTask('watch');
33
- if (!this.parent) {
34
- this.tasks.removeTask('install');
35
- this.tasks.removeTask('install:ci');
36
- }
35
+ __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureProjenrc).call(this);
37
36
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configurePackage).call(this, options);
38
37
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureTypeScript).call(this, options);
38
+ if (this.parent) {
39
+ this.tasks.tryFind('default')?.reset();
40
+ this.tasks.tryFind('install')?.reset();
41
+ this.tasks.tryFind('install:ci')?.reset();
42
+ }
39
43
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureBeachball).call(this, options);
40
44
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureCodeowners).call(this, options);
41
45
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureEditorConfig).call(this, options);
42
46
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureHusky).call(this, options);
47
+ __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureJestConfig).call(this, options);
48
+ __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureLicense).call(this, options);
43
49
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureLintSynthesized).call(this, options);
44
- __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureProjenrc).call(this);
50
+ __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureNpmIgnore).call(this, options);
45
51
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_configureRenovate).call(this, options);
46
52
  __classPrivateFieldGet(this, _Project_instances, "m", _Project_createPnpmWorkspaces).call(this, options);
47
53
  }
@@ -124,12 +130,46 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
124
130
  this.package?.addDevDeps('husky@9.0.11');
125
131
  this.package?.setScript('prepare', 'husky');
126
132
  this.tryFindObjectFile('package.json')?.addDeletionOverride('pnpm');
133
+ }, _Project_configureJestConfig = function _Project_configureJestConfig({ jestConfigOptions }) {
134
+ if (!jestConfigOptions || this.parent) {
135
+ return;
136
+ }
137
+ this.jestConfig = new JestConfig(this, jestConfigOptions);
138
+ }, _Project_configureLicense = function _Project_configureLicense({ package: pkg }) {
139
+ if (!pkg?.license) {
140
+ return;
141
+ }
142
+ if (!pkg.authorName) {
143
+ throw new Error('Missing package author name. Set `package.authorName` in the project');
144
+ }
145
+ this.license = new License(this, {
146
+ spdx: pkg.license,
147
+ copyrightHolder: [
148
+ pkg.authorName,
149
+ pkg.authorEmail ? `<${pkg.authorEmail}>` : undefined,
150
+ pkg.authorUrl ? `(${pkg.authorUrl})` : undefined,
151
+ ]
152
+ .filter(Boolean)
153
+ .join(' '),
154
+ year: pkg.copyrightYear ?? new Date().getFullYear().toString(),
155
+ });
127
156
  }, _Project_configureLintSynthesized = function _Project_configureLintSynthesized({ lintSynthesizedOptions }) {
128
157
  new LintSynthesized(this, lintSynthesizedOptions ?? {
129
158
  'package.json': 'pnpx sort-package-json',
130
159
  '*.{js,jsx,ts,tsx}': 'pnpm eslint --fix',
131
160
  '*': 'pnpm prettier --write --ignore-unknown',
132
161
  });
162
+ }, _Project_configureNpmIgnore = function _Project_configureNpmIgnore({ jestConfigOptions, npmIgnoreOptions }) {
163
+ if (!npmIgnoreOptions) {
164
+ return;
165
+ }
166
+ const defaults = {
167
+ ignorePatterns: [
168
+ ...(jestConfigOptions ? ['*.test.*', '.*', '__snapshots__/'] : []),
169
+ 'tsconfig*.json',
170
+ ],
171
+ };
172
+ this.npmIgnore = new IgnoreFile(this, '.npmignore', deepMerge(defaults, npmIgnoreOptions));
133
173
  }, _Project_configurePackage = function _Project_configurePackage({ package: pkg }) {
134
174
  if (!pkg) {
135
175
  return;
@@ -150,9 +190,6 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
150
190
  this.package.removeScript('default');
151
191
  }
152
192
  }, _Project_configureProjenrc = function _Project_configureProjenrc() {
153
- if (this.parent) {
154
- return;
155
- }
156
193
  this.projenrc = new ProjenrcFile(this, {});
157
194
  }, _Project_configureRenovate = function _Project_configureRenovate({ renovateOptions }) {
158
195
  if (!renovateOptions || this.parent) {
@@ -168,10 +205,23 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
168
205
  customType: 'regex',
169
206
  datasourceTemplate: 'npm',
170
207
  fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
208
+ matchStringsStrategy: 'recursive',
209
+ matchStrings: [
210
+ '\\.(?<depType>addDeps|addDevDeps|addPeerDeps)\\([^)]*\\)',
211
+ "'(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'",
212
+ ],
213
+ depTypeTemplate: "{{#if (equals depType 'addDeps')}}dependencies{{else if (equals depType 'addDevDeps')}}devDependencies{{else}}peerDependencies{{/if}}",
214
+ },
215
+ {
216
+ customType: 'regex',
217
+ datasourceTemplate: 'npm',
218
+ fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
219
+ matchStringsStrategy: 'recursive',
171
220
  matchStrings: [
172
- "\\.(?<depType>addDep|addDevDep|addPeerDep)\\('(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'\\)",
221
+ '(?<depType>deps|devDeps|peerDeps):\\s*\\[[^\\]]*\\]',
222
+ "'(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'",
173
223
  ],
174
- depTypeTemplate: "{{#if (equals depType 'addDevDep')}}devDependencies{{else if (equals depType 'addPeerDep')}}peerDependencies{{else}}dependencies{{/if}}",
224
+ depTypeTemplate: "{{#if (equals depType 'deps')}}dependencies{{else if (equals depType 'devDeps')}}devDependencies{{else}}peerDependencies{{/if}}",
175
225
  },
176
226
  {
177
227
  customType: 'regex',
@@ -221,7 +271,7 @@ _Project_instances = new WeakSet(), _Project_configureBeachball = function _Proj
221
271
  },
222
272
  });
223
273
  };
224
- const getGitIgnoreOptions = ({ huskyOptions, typeScriptConfigOptions, withTerraform, parent, gitIgnoreOptions, ...options }) => parent
274
+ const getGitIgnoreOptions = ({ gitIgnoreOptions, huskyOptions, parent, typeScriptConfigOptions, withTerraform, ...options }) => parent
225
275
  ? gitIgnoreOptions
226
276
  : {
227
277
  ignorePatterns: [
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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;CAyBlD"}
@@ -2,6 +2,10 @@ import { ProjenrcFile as BaseProjenrcFile, SampleFile } from 'projen';
2
2
  export class ProjenrcFile extends BaseProjenrcFile {
3
3
  constructor(project, { filename = '.projenrc.mts' }) {
4
4
  super(project);
5
+ if (project.parent) {
6
+ this.filePath = ProjenrcFile.of(project.parent)?.filePath ?? filename;
7
+ return;
8
+ }
5
9
  this.filePath = filename;
6
10
  this.project.defaultTask?.exec(`node --loader ts-node/esm/transpile-only ${filename}`);
7
11
  new SampleFile(project, filename, {
@@ -1 +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"}
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,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,IAAI,QAAQ,CAAA;YAErE,OAAM;QACR,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,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.8.0",
3
+ "version": "0.9.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -12,6 +12,8 @@
12
12
  "@langri-sha/projen-codeowners": "0.2.3",
13
13
  "@langri-sha/projen-editorconfig": "0.3.4",
14
14
  "@langri-sha/projen-husky": "0.1.3",
15
+ "@langri-sha/projen-jest-config": "0.1.0",
16
+ "@langri-sha/projen-license": "0.1.0",
15
17
  "@langri-sha/projen-lint-synthesized": "0.2.5",
16
18
  "@langri-sha/projen-renovate": "0.2.3",
17
19
  "@langri-sha/projen-typescript-config": "0.2.1",
package/readme CHANGED
@@ -20,5 +20,5 @@ projects.
20
20
  [code owners]:
21
21
  https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
22
22
  [pnpm]: https://pnpm.io
23
- [projen]: https://projen.dev/
23
+ [projen]: https://projen.io/
24
24
  [workspaces]: https://pnpm.io/workspaces
package/src/index.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import {
2
2
  Project as BaseProject,
3
3
  type ProjectOptions as BaseProjectOptions,
4
+ IgnoreFile,
5
+ IgnoreFileOptions,
4
6
  YamlFile,
5
7
  javascript,
6
8
  } from 'projen'
@@ -26,8 +28,10 @@ import {
26
28
  type TypeScriptConfigOptions,
27
29
  } from '@langri-sha/projen-typescript-config'
28
30
  import { Beachball, BeachballOptions } from '@langri-sha/projen-beachball'
31
+ import { License } from '@langri-sha/projen-license'
29
32
 
30
33
  import { ProjenrcFile } from './lib/index.js'
34
+ import { JestConfig, JestConfigOptions } from '@langri-sha/projen-jest-config'
31
35
 
32
36
  export * from '@langri-sha/projen-typescript-config'
33
37
 
@@ -53,10 +57,10 @@ export interface ProjectOptions
53
57
  */
54
58
  huskyOptions?: HuskyOptions
55
59
 
56
- /*
57
- * Pass in to configure Renovate.
60
+ /**
61
+ * Configures Jest, when provided.
58
62
  */
59
- renovateOptions?: RenovateOptions
63
+ jestConfigOptions?: JestConfigOptions
60
64
 
61
65
  /*
62
66
  * Options for the linting synthesized files.
@@ -66,7 +70,24 @@ export interface ProjectOptions
66
70
  /**
67
71
  * Package configuration options.
68
72
  */
69
- package?: javascript.NodePackageOptions
73
+ package?: {
74
+ /**
75
+ * License copyright year.
76
+ *
77
+ * @default "Current full year"
78
+ */
79
+ copyrightYear?: string
80
+ } & javascript.NodePackageOptions
81
+
82
+ /**
83
+ * Pass in to configure NPM ignore options.
84
+ */
85
+ npmIgnoreOptions?: IgnoreFileOptions
86
+
87
+ /*
88
+ * Pass in to configure Renovate.
89
+ */
90
+ renovateOptions?: RenovateOptions
70
91
 
71
92
  /**
72
93
  * TypeScript configuration options.
@@ -89,6 +110,9 @@ export class Project extends BaseProject {
89
110
  codeowners?: Codeowners
90
111
  editorConfig?: EditorConfig
91
112
  husky?: Husky
113
+ jestConfig?: JestConfig
114
+ license?: License
115
+ npmIgnore?: IgnoreFile
92
116
  package?: javascript.NodePackage
93
117
  projenrc?: ProjenrcFile
94
118
  renovate?: Renovate
@@ -109,20 +133,24 @@ export class Project extends BaseProject {
109
133
  this.tasks.removeTask('pre-compile')
110
134
  this.tasks.removeTask('watch')
111
135
 
112
- if (!this.parent) {
113
- this.tasks.removeTask('install')
114
- this.tasks.removeTask('install:ci')
115
- }
116
-
136
+ this.#configureProjenrc()
117
137
  this.#configurePackage(options)
118
138
  this.#configureTypeScript(options)
119
139
 
140
+ if (this.parent) {
141
+ this.tasks.tryFind('default')?.reset()
142
+ this.tasks.tryFind('install')?.reset()
143
+ this.tasks.tryFind('install:ci')?.reset()
144
+ }
145
+
120
146
  this.#configureBeachball(options)
121
147
  this.#configureCodeowners(options)
122
148
  this.#configureEditorConfig(options)
123
149
  this.#configureHusky(options)
150
+ this.#configureJestConfig(options)
151
+ this.#configureLicense(options)
124
152
  this.#configureLintSynthesized(options)
125
- this.#configureProjenrc()
153
+ this.#configureNpmIgnore(options)
126
154
  this.#configureRenovate(options)
127
155
  this.#createPnpmWorkspaces(options)
128
156
  }
@@ -232,6 +260,38 @@ export class Project extends BaseProject {
232
260
  this.tryFindObjectFile('package.json')?.addDeletionOverride('pnpm')
233
261
  }
234
262
 
263
+ #configureJestConfig({ jestConfigOptions }: ProjectOptions) {
264
+ if (!jestConfigOptions || this.parent) {
265
+ return
266
+ }
267
+
268
+ this.jestConfig = new JestConfig(this, jestConfigOptions)
269
+ }
270
+
271
+ #configureLicense({ package: pkg }: ProjectOptions) {
272
+ if (!pkg?.license) {
273
+ return
274
+ }
275
+
276
+ if (!pkg.authorName) {
277
+ throw new Error(
278
+ 'Missing package author name. Set `package.authorName` in the project',
279
+ )
280
+ }
281
+
282
+ this.license = new License(this, {
283
+ spdx: pkg.license,
284
+ copyrightHolder: [
285
+ pkg.authorName,
286
+ pkg.authorEmail ? `<${pkg.authorEmail}>` : undefined,
287
+ pkg.authorUrl ? `(${pkg.authorUrl})` : undefined,
288
+ ]
289
+ .filter(Boolean)
290
+ .join(' '),
291
+ year: pkg.copyrightYear ?? new Date().getFullYear().toString(),
292
+ })
293
+ }
294
+
235
295
  #configureLintSynthesized({ lintSynthesizedOptions }: ProjectOptions) {
236
296
  new LintSynthesized(
237
297
  this,
@@ -243,6 +303,25 @@ export class Project extends BaseProject {
243
303
  )
244
304
  }
245
305
 
306
+ #configureNpmIgnore({ jestConfigOptions, npmIgnoreOptions }: ProjectOptions) {
307
+ if (!npmIgnoreOptions) {
308
+ return
309
+ }
310
+
311
+ const defaults: IgnoreFileOptions = {
312
+ ignorePatterns: [
313
+ ...(jestConfigOptions ? ['*.test.*', '.*', '__snapshots__/'] : []),
314
+ 'tsconfig*.json',
315
+ ],
316
+ }
317
+
318
+ this.npmIgnore = new IgnoreFile(
319
+ this,
320
+ '.npmignore',
321
+ deepMerge(defaults, npmIgnoreOptions),
322
+ )
323
+ }
324
+
246
325
  #configurePackage({ package: pkg }: ProjectOptions) {
247
326
  if (!pkg) {
248
327
  return
@@ -270,10 +349,6 @@ export class Project extends BaseProject {
270
349
  }
271
350
 
272
351
  #configureProjenrc() {
273
- if (this.parent) {
274
- return
275
- }
276
-
277
352
  this.projenrc = new ProjenrcFile(this, {})
278
353
  }
279
354
 
@@ -292,11 +367,25 @@ export class Project extends BaseProject {
292
367
  customType: 'regex',
293
368
  datasourceTemplate: 'npm',
294
369
  fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
370
+ matchStringsStrategy: 'recursive',
295
371
  matchStrings: [
296
- "\\.(?<depType>addDep|addDevDep|addPeerDep)\\('(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'\\)",
372
+ '\\.(?<depType>addDeps|addDevDeps|addPeerDeps)\\([^)]*\\)',
373
+ "'(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'",
297
374
  ],
298
375
  depTypeTemplate:
299
- "{{#if (equals depType 'addDevDep')}}devDependencies{{else if (equals depType 'addPeerDep')}}peerDependencies{{else}}dependencies{{/if}}",
376
+ "{{#if (equals depType 'addDeps')}}dependencies{{else if (equals depType 'addDevDeps')}}devDependencies{{else}}peerDependencies{{/if}}",
377
+ },
378
+ {
379
+ customType: 'regex',
380
+ datasourceTemplate: 'npm',
381
+ fileMatch: ['\\.?projen.*.(js|cjs|mjs|ts|mts|cts)$'],
382
+ matchStringsStrategy: 'recursive',
383
+ matchStrings: [
384
+ '(?<depType>deps|devDeps|peerDeps):\\s*\\[[^\\]]*\\]',
385
+ "'(?<depName>[a-zA-Z0-9-]+)@(?<currentValue>[^']+)'",
386
+ ],
387
+ depTypeTemplate:
388
+ "{{#if (equals depType 'deps')}}dependencies{{else if (equals depType 'devDeps')}}devDependencies{{else}}peerDependencies{{/if}}",
300
389
  },
301
390
  {
302
391
  customType: 'regex',
@@ -362,11 +451,11 @@ export class Project extends BaseProject {
362
451
  }
363
452
 
364
453
  const getGitIgnoreOptions = ({
454
+ gitIgnoreOptions,
365
455
  huskyOptions,
456
+ parent,
366
457
  typeScriptConfigOptions,
367
458
  withTerraform,
368
- parent,
369
- gitIgnoreOptions,
370
459
  ...options
371
460
  }: ProjectOptions): ProjectOptions['gitIgnoreOptions'] =>
372
461
  parent
@@ -17,7 +17,14 @@ export class ProjenrcFile extends BaseProjenrcFile {
17
17
  ) {
18
18
  super(project)
19
19
 
20
+ if (project.parent) {
21
+ this.filePath = ProjenrcFile.of(project.parent)?.filePath ?? filename
22
+
23
+ return
24
+ }
25
+
20
26
  this.filePath = filename
27
+
21
28
  this.project.defaultTask?.exec(
22
29
  `node --loader ts-node/esm/transpile-only ${filename}`,
23
30
  )