pob 9.15.1 → 9.16.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.md CHANGED
@@ -3,6 +3,31 @@
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
+ # [9.16.0](https://github.com/christophehurpeau/pob/compare/pob@9.15.1...pob@9.16.0) (2022-02-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **pob:** add monorpeo generaterd rollup config file to ignored paths ([c08328b](https://github.com/christophehurpeau/pob/commit/c08328b9f4970b3488bcd0bfe9f23bcc282144f7))
12
+ * dont delete vscode directory inside monorepo ([837bfe5](https://github.com/christophehurpeau/pob/commit/837bfe577cbf5c892fab95f0f19ff19c9e971f1e))
13
+ * **deps:** update dependency @yarnpkg/parsers to v2.5.0-rc.11 ([#1187](https://github.com/christophehurpeau/pob/issues/1187)) ([70d8a9a](https://github.com/christophehurpeau/pob/commit/70d8a9acfa0325349d465a0ee0539937535026d8))
14
+ * **pob:** ci tsc before eslint to build cache ([92d60de](https://github.com/christophehurpeau/pob/commit/92d60de3d616ed712d7ee4ba42d4d702670afd41))
15
+ * **pob:** generate vscode config for eslint in monorepo workspace ([ebdb9cc](https://github.com/christophehurpeau/pob/commit/ebdb9cc1f8c5b4e5ac325e37fa44c20616779a6a))
16
+ * **pob:** make sure build-state.yml doesnt exists ([322d582](https://github.com/christophehurpeau/pob/commit/322d5826627ba74a188f381e37a1365fe390baa2))
17
+ * dont set isolatedModules to false now that composite is supported with isolatedModules ([5d0816d](https://github.com/christophehurpeau/pob/commit/5d0816d9da90765aba168bd694d2a8e7f696ec46))
18
+
19
+
20
+ ### Features
21
+
22
+ * better composite tsc config ([edef88e](https://github.com/christophehurpeau/pob/commit/edef88ef046c18498f6909c3dbeef2289cb418f9))
23
+ * much faster monorepo build with only one rollup command ([c4bafc3](https://github.com/christophehurpeau/pob/commit/c4bafc3be0c06a0a2446d37d176a043835693752))
24
+ * support linaria in jest config ([2e26479](https://github.com/christophehurpeau/pob/commit/2e26479be7016a383c74ee14669aa3a19d3a5a75))
25
+ * **deps:** update @pob/eslint-config to v48.1.0 ([#1188](https://github.com/christophehurpeau/pob/issues/1188)) ([75dd637](https://github.com/christophehurpeau/pob/commit/75dd6373d04359e12beb3b48f54ae2a541af4765))
26
+
27
+
28
+
29
+
30
+
6
31
  ## [9.15.1](https://github.com/christophehurpeau/pob/compare/pob@9.15.0...pob@9.15.1) (2022-01-29)
7
32
 
8
33
  **Note:** Version bump only for package pob
@@ -271,16 +271,18 @@ export default class CommonBabelGenerator extends Generator {
271
271
  if (this.options.isApp) {
272
272
  packageUtils.removeScripts(['watch']);
273
273
  packageUtils.addOrRemoveScripts(pkg, useBabel, {
274
- build: 'pob-build',
275
- start: 'pob-watch',
276
- clean: 'rm -Rf dist',
274
+ 'clean:build': 'rm -Rf dist',
275
+ build: 'yarn clean:build && rollup --config rollup.config.mjs',
276
+ start: 'yarn clean:build && rollup --config rollup.config.mjs --watch',
277
+ clean: 'yarn clean:build',
277
278
  });
278
279
  } else {
279
280
  packageUtils.removeScripts(['start']);
280
281
  packageUtils.addOrRemoveScripts(pkg, useBabel, {
281
- build: 'pob-build',
282
- watch: 'pob-watch',
283
- clean: 'rm -Rf dist',
282
+ 'clean:build': 'rm -Rf dist',
283
+ build: 'yarn clean:build && rollup --config rollup.config.mjs',
284
+ watch: 'yarn clean:build && rollup --config rollup.config.mjs --watch',
285
+ clean: 'yarn clean:build',
284
286
  });
285
287
  }
286
288
 
@@ -340,7 +342,6 @@ export default class CommonBabelGenerator extends Generator {
340
342
  ]);
341
343
 
342
344
  packageUtils.removeDevDependencies(pkg, [
343
- 'rollup',
344
345
  'babel-preset-env', // now @babel/preset-env
345
346
  'babel-preset-jsdoc',
346
347
  'babel-plugin-add-jsdoc-annotations',
@@ -1,3 +1,5 @@
1
1
  import createRollupConfig from 'pob-babel/createRollupConfig.js';
2
2
 
3
- export default createRollupConfig({});
3
+ export default createRollupConfig({
4
+ cwd: new URL('.', import.meta.url).pathname,
5
+ });
@@ -394,6 +394,9 @@ export default class CommonLintGenerator extends Generator {
394
394
  if ((!inLerna || !inLerna.root) && useBabel) {
395
395
  ignorePatterns.add('/dist', '/test');
396
396
  }
397
+ if (inLerna && inLerna.root) {
398
+ ignorePatterns.add('/rollup.config.mjs');
399
+ }
397
400
 
398
401
  if (this.options.ignorePaths) {
399
402
  this.options.ignorePaths
@@ -272,6 +272,9 @@ export default class CommonTestingGenerator extends Generator {
272
272
  ])
273
273
  .join(', '),
274
274
  hasReact,
275
+ hasLinaria:
276
+ !!pkg.devDependencies?.['@linaria/babel-preset'] ||
277
+ !!pkg.devDependencies?.['alp-dev'],
275
278
  testing: this.options.testing,
276
279
  jestExperimentalESM: pkg.type === 'module',
277
280
  },
@@ -16,6 +16,9 @@ module.exports = function babelConfig(api) {
16
16
  useBuiltIns: true,
17
17
  },
18
18
  ]<% } %>
19
+ <% if (hasLinaria) { %>, [
20
+ '@linaria/babel-preset'
21
+ ]<% } %>
19
22
  ],
20
23
  };
21
24
  };
@@ -120,6 +120,7 @@ export default class CommonTypescriptGenerator extends Generator {
120
120
  monorepoPackageNames,
121
121
  monorepoPackageSrcPaths,
122
122
  jsx,
123
+ composite,
123
124
  dom,
124
125
  baseUrl: this.options.baseUrl,
125
126
  resolveJsonModule: this.options.resolveJsonModule,
@@ -2,18 +2,15 @@
2
2
  "extends": "./tsconfig.json",
3
3
 
4
4
  "compilerOptions": {
5
+ "rootDir": "src",
5
6
  "noEmit": false,
7
+ "declaration": true,
8
+ "declarationMap": true,
6
9
  "emitDeclarationOnly": true,
7
- "rootDirs": [],
8
- "rootDir": "src",
9
- "outDir": "dist",
10
- <% if(composite) { -%>
10
+ "outDir": "dist"<% if(composite) { -%>,
11
11
  "composite": true,
12
- "tsBuildInfoFile": "dist/tsbuildinfo",
12
+ "tsBuildInfoFile": "dist/tsbuildinfo"
13
13
  <% } -%>
14
- "isolatedModules": false,
15
- "declaration": true,
16
- "declarationMap": true
17
14
  },
18
15
 
19
16
  "exclude": [
@@ -4,13 +4,25 @@
4
4
  "src/**/*.tsx"<% } %>
5
5
  ],
6
6
  "compilerOptions": {
7
+ "rootDir": "src",
8
+ <% if(!composite) { -%>
7
9
  /* No emit in default config file. See build config file for config to build declaration files */
8
10
  "noEmit": true,
11
+ <% } else { -%>
12
+ "composite": true,
13
+ "incremental": true,
14
+ "noEmit": false,
15
+ "noEmitOnError": true,
16
+ "declaration": true,
17
+ "declarationMap": true,
18
+ "emitDeclarationOnly": true,
19
+ "outDir": "node_modules/.cache/tsc",
20
+ "tsBuildInfoFile": "node_modules/.cache/tsc/tsbuildinfo",
21
+ <% } -%>
22
+
9
23
  /* No need to check .d.ts files */
10
24
  "skipLibCheck": true,
11
25
 
12
- "rootDirs": ["src"<% /*(monorepoPackageNames || []).forEach((packageName, index) => { -%>, "../../<%= monorepoPackageSrcPaths[index] %>"<% })*/ -%>],
13
-
14
26
  "target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
15
27
  "module": "esnext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
16
28
  "lib": [<%- dom ? '"dom", ' : '' %>"esnext"], /* Polyfills are imported either by babel or with polyfill.io */
@@ -34,14 +46,19 @@
34
46
  <% if (resolveJsonModule) { -%>
35
47
  "resolveJsonModule": <%= resolveJsonModule %>,
36
48
  <% } -%>
37
- "baseUrl": "<%= baseUrl %>"<% if (monorepoPackageNames) { %>,<% } %><%= ' '.slice(0, -(baseUrl.length + (monorepoPackageNames ? 1 : 0))) %>/* Base directory to resolve non-absolute module names. */
49
+ "baseUrl": "<%= baseUrl %>"<% if (monorepoPackageNames) { %>,<% } %> /* Base directory to resolve non-absolute module names. */
38
50
  <% if (monorepoPackageNames && monorepoPackageNames.length !== 0) { -%>
39
-
40
51
  "paths": {
41
52
  <% monorepoPackageNames.forEach((packageName, index) => { %>
42
53
  "<%= packageName %>": ["../../../<%= monorepoPackageSrcPaths[index] %>"],
43
54
  "<%= packageName %>/*": ["../../../<%= monorepoPackageSrcPaths[index] %>/*"]<%= index === monorepoPackageNames.length -1 ? '' : ',' -%>
44
55
  <% }) %>
45
56
  }<% } %>
46
- }
57
+ }<% if (monorepoPackageNames && monorepoPackageNames.length) { -%>,
58
+ "references": [
59
+ <% monorepoPackageNames.forEach((packageName, index) => { -%>
60
+ { "path": "../<%= packageName %>/tsconfig.json" }<%= index === monorepoPackageNames.length -1 ? '' : ',' %>
61
+ <% }) -%>
62
+ ],
63
+ <% } -%>
47
64
  }
@@ -63,16 +63,16 @@ jobs:
63
63
  - name: Prettier
64
64
  run: <%= packageManager %> run lint:prettier
65
65
  if: startsWith(matrix.node-version, '16.')
66
-
67
- - name: Eslint
68
- run: <%= packageManager %> run lint:eslint
69
- if: startsWith(matrix.node-version, '16.')
70
66
  <% if (typescript) { -%>
71
67
 
72
68
  - name: Typescript
73
69
  run: yarn run tsc
74
70
  if: startsWith(matrix.node-version, '16.')
75
71
  <% } -%>
72
+
73
+ - name: Eslint
74
+ run: <%= packageManager %> run lint:eslint
75
+ if: startsWith(matrix.node-version, '16.')
76
76
  <% if (codecov) { -%>
77
77
 
78
78
  - name: Generate Test Coverage
@@ -112,6 +112,16 @@ export default class CoreVSCodeGenerator extends Generator {
112
112
  }));
113
113
  folders.sort((a, b) => a.name.localeCompare(b.name, 'en'));
114
114
 
115
+ packageLocations.forEach((location) => {
116
+ writeAndFormatJson(
117
+ this.fs,
118
+ this.destinationPath(`${location}/.vscode/settings.json`),
119
+ {
120
+ 'eslint.workingDirectories': ['../../'],
121
+ },
122
+ );
123
+ });
124
+
115
125
  const extensions = readJSON5(
116
126
  this.fs,
117
127
  this.destinationPath('.vscode/extensions.json'),
@@ -156,7 +166,7 @@ export default class CoreVSCodeGenerator extends Generator {
156
166
  );
157
167
  }
158
168
  } else {
159
- this.fs.delete('.vscode');
169
+ // this.fs.delete('.vscode');
160
170
  }
161
171
  }
162
172
  }
@@ -112,6 +112,7 @@ export default class CoreYarnGenerator extends Generator {
112
112
  }
113
113
 
114
114
  end() {
115
+ this.fs.delete(this.destinationPath('.yarn/build-state.yml'));
115
116
  if (this.options.enable) {
116
117
  if (this.options.yarnNodeLinker === 'pnp') {
117
118
  this.spawnCommandSync('yarn', ['dlx', '@yarnpkg/sdks', 'vscode']);
@@ -4,8 +4,7 @@
4
4
 
5
5
  "compilerOptions": {
6
6
  "rootDirs": [],
7
- "rootDir": "src",
8
- "isolatedModules": false
7
+ "rootDir": "src"
9
8
  },
10
9
 
11
10
  "typedocOptions": {
@@ -4,6 +4,8 @@ import path from 'path';
4
4
  import { PackageGraph } from '@lerna/package-graph';
5
5
  import { Project as LernaProject } from '@lerna/project';
6
6
  import Generator from 'yeoman-generator';
7
+ import * as packageUtils from '../../utils/package.js';
8
+ import { copyAndFormatTpl } from '../../utils/writeAndFormat.js';
7
9
 
8
10
  const getAppTypes = (configs) => {
9
11
  const appConfigs = configs.filter(
@@ -101,8 +103,7 @@ export default class PobMonorepoGenerator extends Generator {
101
103
  this.packageNames = this.packages.map((pkg) => pkg.name);
102
104
  this.packageConfigs = this.packageLocations.map((location) => {
103
105
  try {
104
- return JSON.parse(fs.readFileSync(`${location}/.yo-rc.json`, 'utf-8'))
105
- .pob;
106
+ return JSON.parse(fs.readFileSync(`${location}/.yo-rc.json`)).pob;
106
107
  } catch {
107
108
  console.warn(`warn: could not read pob config in ${location}`);
108
109
  return {};
@@ -251,6 +252,46 @@ export default class PobMonorepoGenerator extends Generator {
251
252
  );
252
253
  }
253
254
 
255
+ writing() {
256
+ if (!this.options.isAppProject) {
257
+ const pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
258
+
259
+ const rollupConfigs = [];
260
+ this.packageLocations.forEach((location) => {
261
+ const rollupPath = `${location}/rollup.config.mjs`;
262
+ const rollupConfig = this.fs.read(this.destinationPath(rollupPath), {
263
+ defaults: null,
264
+ });
265
+ if (rollupConfig) {
266
+ rollupConfigs.push(rollupPath);
267
+ }
268
+ });
269
+
270
+ if (rollupConfigs.length > 0) {
271
+ copyAndFormatTpl(
272
+ this.fs,
273
+ this.templatePath('monorepo.rollup.config.mjs.ejs'),
274
+ this.destinationPath('rollup.config.mjs'),
275
+ {
276
+ configLocations: rollupConfigs,
277
+ },
278
+ );
279
+ } else {
280
+ this.fs.delete('rollup.config.mjs');
281
+ }
282
+ packageUtils.addOrRemoveScripts(pkg, rollupConfigs.length > 0, {
283
+ 'clean:build': `(${pkg.workspaces
284
+ .map((workspaces) => `rm -Rf ${workspaces}/dist`)
285
+ .join(' && ')}) || true`,
286
+ build: 'yarn clean:build && rollup --config rollup.config.mjs',
287
+ });
288
+ packageUtils.addOrRemoveDevDependencies(pkg, rollupConfigs.length, [
289
+ 'pob-babel',
290
+ ]);
291
+ this.fs.writeJSON(this.destinationPath('package.json'), pkg);
292
+ }
293
+ }
294
+
254
295
  end() {
255
296
  console.log('save config');
256
297
  this.config.save();
@@ -89,8 +89,6 @@ export default class MonorepoLernaGenerator extends Generator {
89
89
  }
90
90
 
91
91
  writing() {
92
- console.log('lerna: writing');
93
-
94
92
  const getPackagePobConfig = (config) => ({
95
93
  babelEnvs: [],
96
94
  ...(config && config.pob),
@@ -0,0 +1,9 @@
1
+ <% configLocations.forEach((location, index) => { -%>
2
+ import configs<%= index + 1 %> from './<%= location %>';
3
+ <% }) -%>
4
+
5
+ export default [
6
+ <% configLocations.forEach((location, index) => { -%>
7
+ ...configs<%= index + 1 %>,
8
+ <% }) -%>
9
+ ];
@@ -13,13 +13,11 @@ const rootMonorepo =
13
13
 
14
14
  const rootMonorepoPkg =
15
15
  rootMonorepo &&
16
- JSON.parse(
17
- fs.readFileSync(path.resolve(rootMonorepo, 'package.json'), 'utf-8'),
18
- );
16
+ JSON.parse(fs.readFileSync(path.resolve(rootMonorepo, 'package.json')));
19
17
 
20
18
  const getInLernaThings = () => {
21
19
  const rootYoConfig = JSON.parse(
22
- fs.readFileSync(path.resolve(rootMonorepo, '.yo-rc.json'), 'utf-8'),
20
+ fs.readFileSync(path.resolve(rootMonorepo, '.yo-rc.json')),
23
21
  );
24
22
  const cwd = process.cwd();
25
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pob",
3
- "version": "9.15.1",
3
+ "version": "9.16.0",
4
4
  "description": "Pile of bones, library generator with git/babel/typescript/typedoc/readme/jest",
5
5
  "keywords": [
6
6
  "skeleton"
@@ -41,13 +41,13 @@
41
41
  "dependencies": {
42
42
  "@lerna/package-graph": "^4.0.0",
43
43
  "@lerna/project": "^4.0.0",
44
- "@pob/eslint-config": "48.0.5",
45
- "@pob/eslint-config-typescript": "48.0.6",
46
- "@pob/eslint-config-typescript-react": "48.0.7",
44
+ "@pob/eslint-config": "48.1.0",
45
+ "@pob/eslint-config-typescript": "48.1.0",
46
+ "@pob/eslint-config-typescript-react": "48.1.0",
47
47
  "@pob/sort-eslint-config": "^3.0.1",
48
48
  "@pob/sort-object": "^4.0.1",
49
49
  "@pob/sort-pkg": "^4.0.1",
50
- "@yarnpkg/parsers": "2.5.0-rc.10",
50
+ "@yarnpkg/parsers": "2.5.0-rc.11",
51
51
  "eslint": "8.8.0",
52
52
  "findup-sync": "^5.0.0",
53
53
  "git-remote-url": "^1.0.1",
@@ -61,11 +61,11 @@
61
61
  "mem-fs-editor": "9.4.0",
62
62
  "minimist-argv": "^1.1.0",
63
63
  "parse-author": "^2.0.0",
64
- "pob-dependencies": "6.11.1",
64
+ "pob-dependencies": "6.12.0",
65
65
  "prettier": "2.5.1",
66
66
  "semver": "^7.3.4",
67
67
  "yeoman-environment": "^3.5.1",
68
68
  "yeoman-generator": "^5.4.0"
69
69
  },
70
- "gitHead": "966b414b24a2f6289c0801666c3b1c9d2cf986ac"
70
+ "gitHead": "d4e58687bcfd00c82a36f2ea2d4dc371114da41a"
71
71
  }