@adbayb/stack 2.33.0 → 2.34.0-next-3f9769a
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/configs/eslint/presets/node.js +2 -1
- package/configs/eslint/presets/react.js +45 -36
- package/configs/eslint/presets/unicorn.js +5 -0
- package/dist/index.js +35 -27
- package/package.json +20 -20
- package/templates/multi-projects/.github/renovate.json +0 -3
- package/templates/multi-projects/.github/workflows/continuous_delivery.yml +4 -3
- package/templates/multi-projects/.github/workflows/conventional_commit.yml +1 -1
- package/templates/multi-projects/.github/workflows/dependency_changelog.yml +1 -1
- package/templates/multi-projects/.github/workflows/workflow.yml +1 -1
- package/templates/multi-projects/package.json.tmpl +16 -3
- package/templates/single-project/.github/renovate.json +0 -3
- package/templates/single-project/.github/workflows/continuous_delivery.yml +4 -3
- package/templates/single-project/.github/workflows/conventional_commit.yml +1 -1
- package/templates/single-project/.github/workflows/dependency_changelog.yml +1 -1
- package/templates/single-project/.github/workflows/workflow.yml +1 -1
- package/templates/single-project/package.json.tmpl +16 -3
|
@@ -7,77 +7,83 @@ import {
|
|
|
7
7
|
} from "../constants.js";
|
|
8
8
|
import { createConfig } from "../helpers.js";
|
|
9
9
|
|
|
10
|
-
const {
|
|
11
|
-
configs: { all: reactPluginConfig },
|
|
12
|
-
} = reactPlugin;
|
|
13
|
-
|
|
14
10
|
export const config = createConfig(
|
|
15
11
|
{
|
|
16
12
|
files: JAVASCRIPT_LIKE_FILES,
|
|
17
|
-
plugins:
|
|
13
|
+
plugins: {
|
|
14
|
+
"@eslint-react": reactPlugin,
|
|
15
|
+
},
|
|
18
16
|
rules: {
|
|
19
|
-
"@eslint-react/
|
|
20
|
-
"@eslint-react/dom
|
|
21
|
-
"@eslint-react/dom/no-dangerously-set-innerhtml-with-children":
|
|
17
|
+
"@eslint-react/dom-no-dangerously-set-innerhtml": "error",
|
|
18
|
+
"@eslint-react/dom-no-dangerously-set-innerhtml-with-children":
|
|
22
19
|
"error",
|
|
23
|
-
"@eslint-react/dom
|
|
24
|
-
"@eslint-react/dom
|
|
25
|
-
"@eslint-react/dom
|
|
26
|
-
"@eslint-react/dom
|
|
27
|
-
"@eslint-react/dom
|
|
28
|
-
"@eslint-react/dom
|
|
29
|
-
"@eslint-react/dom
|
|
30
|
-
"@eslint-react/dom
|
|
31
|
-
"@eslint-react/dom
|
|
32
|
-
"@eslint-react/dom
|
|
33
|
-
"@eslint-react/dom
|
|
34
|
-
"@eslint-react/dom
|
|
35
|
-
"@eslint-react/dom
|
|
36
|
-
"@eslint-react/dom
|
|
20
|
+
"@eslint-react/dom-no-find-dom-node": "error",
|
|
21
|
+
"@eslint-react/dom-no-flush-sync": "error",
|
|
22
|
+
"@eslint-react/dom-no-hydrate": "error",
|
|
23
|
+
"@eslint-react/dom-no-missing-button-type": "error",
|
|
24
|
+
"@eslint-react/dom-no-missing-iframe-sandbox": "error",
|
|
25
|
+
"@eslint-react/dom-no-render": "error",
|
|
26
|
+
"@eslint-react/dom-no-render-return-value": "error",
|
|
27
|
+
"@eslint-react/dom-no-script-url": "error",
|
|
28
|
+
"@eslint-react/dom-no-string-style-prop": "error",
|
|
29
|
+
"@eslint-react/dom-no-unknown-property": "error",
|
|
30
|
+
"@eslint-react/dom-no-unsafe-iframe-sandbox": "error",
|
|
31
|
+
"@eslint-react/dom-no-unsafe-target-blank": "error",
|
|
32
|
+
"@eslint-react/dom-no-use-form-state": "error",
|
|
33
|
+
"@eslint-react/dom-no-void-elements-with-children": "error",
|
|
37
34
|
"@eslint-react/error-boundaries": "error",
|
|
38
35
|
"@eslint-react/exhaustive-deps": "warn",
|
|
36
|
+
"@eslint-react/globals": "error",
|
|
39
37
|
"@eslint-react/immutability": "error",
|
|
38
|
+
"@eslint-react/jsx-no-children-prop": "error",
|
|
39
|
+
"@eslint-react/jsx-no-children-prop-with-children": "error",
|
|
40
40
|
"@eslint-react/jsx-no-comment-textnodes": "error",
|
|
41
|
-
"@eslint-react/jsx-
|
|
42
|
-
"@eslint-react/jsx-
|
|
43
|
-
"@eslint-react/
|
|
41
|
+
"@eslint-react/jsx-no-key-after-spread": "error",
|
|
42
|
+
"@eslint-react/jsx-no-leaked-dollar": "error",
|
|
43
|
+
"@eslint-react/jsx-no-leaked-semicolon": "error",
|
|
44
|
+
"@eslint-react/jsx-no-namespace": "error",
|
|
45
|
+
"@eslint-react/jsx-no-useless-fragment": "error",
|
|
46
|
+
"@eslint-react/naming-convention-context-name": "error",
|
|
47
|
+
"@eslint-react/naming-convention-id-name": "error",
|
|
48
|
+
"@eslint-react/naming-convention-ref-name": "error",
|
|
44
49
|
"@eslint-react/no-access-state-in-setstate": "error",
|
|
45
|
-
"@eslint-react/no-
|
|
50
|
+
"@eslint-react/no-array-index-key": "error",
|
|
46
51
|
"@eslint-react/no-class-component": "error",
|
|
47
52
|
"@eslint-react/no-context-provider": "error",
|
|
48
53
|
"@eslint-react/no-create-ref": "error",
|
|
49
54
|
"@eslint-react/no-direct-mutation-state": "error",
|
|
50
55
|
"@eslint-react/no-duplicate-key": "error",
|
|
51
56
|
"@eslint-react/no-forward-ref": "error",
|
|
57
|
+
"@eslint-react/no-implicit-children": "error",
|
|
58
|
+
"@eslint-react/no-implicit-key": "error",
|
|
59
|
+
"@eslint-react/no-implicit-ref": "error",
|
|
52
60
|
"@eslint-react/no-leaked-conditional-rendering": "error",
|
|
53
61
|
"@eslint-react/no-missing-component-display-name": "error",
|
|
54
62
|
"@eslint-react/no-missing-key": "error",
|
|
55
63
|
"@eslint-react/no-misused-capture-owner-stack": "error",
|
|
56
64
|
"@eslint-react/no-nested-component-definitions": "error",
|
|
57
65
|
"@eslint-react/no-nested-lazy-component-declarations": "error",
|
|
58
|
-
"@eslint-react/no-unnecessary-use-callback": "error",
|
|
59
|
-
"@eslint-react/no-unnecessary-use-memo": "error",
|
|
60
66
|
"@eslint-react/no-unnecessary-use-prefix": "error",
|
|
61
67
|
"@eslint-react/no-unstable-context-value": "error",
|
|
62
68
|
"@eslint-react/no-unstable-default-props": "error",
|
|
63
|
-
"@eslint-react/no-unused-class-component-members": "error",
|
|
64
69
|
"@eslint-react/no-unused-props": "error",
|
|
70
|
+
"@eslint-react/no-unused-state": "error",
|
|
65
71
|
"@eslint-react/no-use-context": "error",
|
|
66
|
-
"@eslint-react/no-useless-fragment": "error",
|
|
67
72
|
"@eslint-react/purity": "error",
|
|
68
73
|
"@eslint-react/refs": "error",
|
|
74
|
+
"@eslint-react/rsc-function-definition": "error",
|
|
69
75
|
"@eslint-react/rules-of-hooks": "error",
|
|
70
76
|
"@eslint-react/set-state-in-effect": "error",
|
|
71
77
|
"@eslint-react/set-state-in-render": "error",
|
|
72
|
-
"@eslint-react/
|
|
73
|
-
"@eslint-react/unstable-rules-of-state": "error",
|
|
78
|
+
"@eslint-react/static-components": "error",
|
|
74
79
|
"@eslint-react/unsupported-syntax": "error",
|
|
75
80
|
"@eslint-react/use-memo": "error",
|
|
76
81
|
"@eslint-react/use-state": "error",
|
|
77
|
-
"@eslint-react/web-api
|
|
78
|
-
"@eslint-react/web-api
|
|
79
|
-
"@eslint-react/web-api
|
|
80
|
-
"@eslint-react/web-api
|
|
82
|
+
"@eslint-react/web-api-no-leaked-event-listener": "error",
|
|
83
|
+
"@eslint-react/web-api-no-leaked-fetch": "error",
|
|
84
|
+
"@eslint-react/web-api-no-leaked-interval": "error",
|
|
85
|
+
"@eslint-react/web-api-no-leaked-resize-observer": "error",
|
|
86
|
+
"@eslint-react/web-api-no-leaked-timeout": "error",
|
|
81
87
|
},
|
|
82
88
|
},
|
|
83
89
|
{
|
|
@@ -88,6 +94,9 @@ export const config = createConfig(
|
|
|
88
94
|
* Until the React X plugin provides a `disableTypeChecked`-like preset, we must maintain the rule list manually
|
|
89
95
|
* following the [documentation](https://eslint-react.xyz/docs/configuration/configure-project-config#type-information).
|
|
90
96
|
*/
|
|
97
|
+
"@eslint-react/no-implicit-children": "off",
|
|
98
|
+
"@eslint-react/no-implicit-key": "off",
|
|
99
|
+
"@eslint-react/no-implicit-ref": "off",
|
|
91
100
|
"@eslint-react/no-leaked-conditional-rendering": "off",
|
|
92
101
|
"@eslint-react/no-unused-props": "off",
|
|
93
102
|
},
|
|
@@ -19,6 +19,7 @@ export const config = createConfig({
|
|
|
19
19
|
"unicorn/consistent-empty-array-spread": "error",
|
|
20
20
|
"unicorn/consistent-existence-index-check": "error",
|
|
21
21
|
"unicorn/consistent-function-scoping": "error",
|
|
22
|
+
"unicorn/consistent-template-literal-escape": "error",
|
|
22
23
|
"unicorn/custom-error-definition": "error",
|
|
23
24
|
"unicorn/error-message": "error",
|
|
24
25
|
"unicorn/escape-case": "error",
|
|
@@ -33,6 +34,7 @@ export const config = createConfig({
|
|
|
33
34
|
},
|
|
34
35
|
},
|
|
35
36
|
],
|
|
37
|
+
"unicorn/isolated-functions": "error",
|
|
36
38
|
"unicorn/new-for-builtins": "error",
|
|
37
39
|
"unicorn/no-abusive-eslint-disable": "error",
|
|
38
40
|
"unicorn/no-array-callback-reference": "error",
|
|
@@ -67,6 +69,7 @@ export const config = createConfig({
|
|
|
67
69
|
"unicorn/no-useless-collection-argument": "error",
|
|
68
70
|
"unicorn/no-useless-error-capture-stack-trace": "error",
|
|
69
71
|
"unicorn/no-useless-fallback-in-spread": "error",
|
|
72
|
+
"unicorn/no-useless-iterator-to-array": "error",
|
|
70
73
|
"unicorn/no-useless-length-check": "error",
|
|
71
74
|
"unicorn/no-useless-promise-resolve-reject": "error",
|
|
72
75
|
"unicorn/no-useless-spread": "error",
|
|
@@ -113,6 +116,7 @@ export const config = createConfig({
|
|
|
113
116
|
"unicorn/prefer-response-static-json": "error",
|
|
114
117
|
"unicorn/prefer-set-has": "error",
|
|
115
118
|
"unicorn/prefer-set-size": "error",
|
|
119
|
+
"unicorn/prefer-simple-condition-first": "error",
|
|
116
120
|
"unicorn/prefer-single-call": "error",
|
|
117
121
|
"unicorn/prefer-spread": "error",
|
|
118
122
|
"unicorn/prefer-string-raw": "error",
|
|
@@ -136,6 +140,7 @@ export const config = createConfig({
|
|
|
136
140
|
"unicorn/require-module-attributes": "error",
|
|
137
141
|
"unicorn/require-number-to-fixed-digits-argument": "error",
|
|
138
142
|
"unicorn/switch-case-braces": "error",
|
|
143
|
+
"unicorn/switch-case-break-position": "error",
|
|
139
144
|
"unicorn/template-indent": "error",
|
|
140
145
|
"unicorn/text-encoding-identifier-case": "error",
|
|
141
146
|
"unicorn/throw-new-error": "error",
|
package/dist/index.js
CHANGED
|
@@ -73,13 +73,6 @@ const createError = (bin, error)=>{
|
|
|
73
73
|
}
|
|
74
74
|
return new Error(errorMessage);
|
|
75
75
|
};
|
|
76
|
-
const checkPackageManager = async ()=>{
|
|
77
|
-
try {
|
|
78
|
-
await helpers.exec("npx only-allow pnpm");
|
|
79
|
-
} catch {
|
|
80
|
-
throw createError("pnpm", "The project must use `pnpm` as a node package manager tool. Follow this installation guide https://pnpm.io/installation");
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
76
|
const getNpmVersion = async ()=>{
|
|
84
77
|
try {
|
|
85
78
|
return await helpers.exec("pnpm -v");
|
|
@@ -87,17 +80,8 @@ const getNpmVersion = async ()=>{
|
|
|
87
80
|
throw createError("pnpm", "The project must use `pnpm` as a node package manager tool. Follow this installation guide https://pnpm.io/installation");
|
|
88
81
|
}
|
|
89
82
|
};
|
|
90
|
-
const getStackCommand = (command
|
|
91
|
-
|
|
92
|
-
* `isNodeRuntime` allows executing node bin executables in a non node environment such as in git hooks context
|
|
93
|
-
* Npx is used to make executable resolution independent from the build tool (npx is the built-in Node tool)
|
|
94
|
-
* `--no` flag to prevent installation prompt and throw an error if the binary is not installed.
|
|
95
|
-
*/ return [
|
|
96
|
-
...isNodeRuntime ? [] : [
|
|
97
|
-
"npx --no"
|
|
98
|
-
],
|
|
99
|
-
`stack ${command}`
|
|
100
|
-
].join(" ");
|
|
83
|
+
const getStackCommand = (command)=>{
|
|
84
|
+
return `pnpm stack ${command}`;
|
|
101
85
|
};
|
|
102
86
|
const hasDependency = (packageName)=>{
|
|
103
87
|
return Boolean(require$1.resolve(packageName));
|
|
@@ -208,6 +192,18 @@ const createBuildCommand = (program)=>{
|
|
|
208
192
|
});
|
|
209
193
|
};
|
|
210
194
|
|
|
195
|
+
const checkChangelog = async ()=>{
|
|
196
|
+
try {
|
|
197
|
+
return await helpers.exec("changeset status --since=origin/main");
|
|
198
|
+
} catch {
|
|
199
|
+
throw createError("changeset", [
|
|
200
|
+
"Some packages have been changed but no changelogs were found.",
|
|
201
|
+
"Run `pnpm stack release --log` to log your change(s).",
|
|
202
|
+
"If the change doesn't require a changelog, you can run `pnpm stack release --empty-log`."
|
|
203
|
+
].join("\n"));
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
211
207
|
const checkCode = eslint({
|
|
212
208
|
isFixMode: false
|
|
213
209
|
});
|
|
@@ -338,6 +334,7 @@ const checkType = async ()=>{
|
|
|
338
334
|
};
|
|
339
335
|
|
|
340
336
|
const ONLY_VALUES = [
|
|
337
|
+
"changelog",
|
|
341
338
|
"commit",
|
|
342
339
|
"code",
|
|
343
340
|
"dependency",
|
|
@@ -368,6 +365,12 @@ const createCheckCommand = (program)=>{
|
|
|
368
365
|
skip ({ filter }) {
|
|
369
366
|
return filter === "commit"; // No need to build if only commit is checked
|
|
370
367
|
}
|
|
368
|
+
}).task({
|
|
369
|
+
async handler () {
|
|
370
|
+
await checkChangelog();
|
|
371
|
+
},
|
|
372
|
+
label: label$4("Check changelog compliance"),
|
|
373
|
+
skip: ifFilterDefinedAndNotEqualTo("changelog")
|
|
371
374
|
}).task({
|
|
372
375
|
async handler () {
|
|
373
376
|
await checkDependency();
|
|
@@ -464,7 +467,7 @@ const PRESERVE_FILES = [
|
|
|
464
467
|
"node_modules"
|
|
465
468
|
];
|
|
466
469
|
|
|
467
|
-
var version = "2.
|
|
470
|
+
var version = "2.34.0-next-3f9769a";
|
|
468
471
|
|
|
469
472
|
const createCreateCommand = (program)=>{
|
|
470
473
|
program.command({
|
|
@@ -704,20 +707,15 @@ const createInstallCommand = (program)=>{
|
|
|
704
707
|
}).task({
|
|
705
708
|
async handler () {
|
|
706
709
|
const lineBreakMatcher = String.raw`\n|\r\n`;
|
|
707
|
-
const
|
|
708
|
-
await installGitHook("pre-commit", `${
|
|
710
|
+
const stackCommand = getStackCommand(`fix $(node -e 'console.log(require("child_process").execSync("git status --porcelain", {encoding: "utf8"}).split(/${lineBreakMatcher}/).filter(Boolean).map(item => item.split(" ").at(-1)).join(" "))')`);
|
|
711
|
+
await installGitHook("pre-commit", `${stackCommand} && git add -A`);
|
|
709
712
|
},
|
|
710
713
|
label: label("Install `git.pre-commit` hook")
|
|
711
714
|
}).task({
|
|
712
715
|
async handler () {
|
|
713
|
-
await installGitHook("commit-msg", getStackCommand("check --filter commit"
|
|
716
|
+
await installGitHook("commit-msg", getStackCommand("check --filter commit"));
|
|
714
717
|
},
|
|
715
718
|
label: label("Install `git.commit-msg` hook")
|
|
716
|
-
}).task({
|
|
717
|
-
async handler () {
|
|
718
|
-
await checkPackageManager();
|
|
719
|
-
},
|
|
720
|
-
label: label("Check the package manager")
|
|
721
719
|
});
|
|
722
720
|
};
|
|
723
721
|
const label = (message)=>`${message} 📲`;
|
|
@@ -735,6 +733,10 @@ const createReleaseCommand = (program)=>{
|
|
|
735
733
|
description: "Add a new changelog entry",
|
|
736
734
|
key: "log",
|
|
737
735
|
name: "log"
|
|
736
|
+
}).option({
|
|
737
|
+
description: "Add an empty changelog entry",
|
|
738
|
+
key: "emptyLog",
|
|
739
|
+
name: "empty-log"
|
|
738
740
|
}).option({
|
|
739
741
|
description: "Bump the package(s) version",
|
|
740
742
|
key: "tag",
|
|
@@ -749,6 +751,12 @@ const createReleaseCommand = (program)=>{
|
|
|
749
751
|
await changeset("changeset");
|
|
750
752
|
},
|
|
751
753
|
skip: ifNotEqualTo("log")
|
|
754
|
+
}).task({
|
|
755
|
+
async handler () {
|
|
756
|
+
helpers.message("New empty changelog entry\n");
|
|
757
|
+
await changeset("changeset --empty");
|
|
758
|
+
},
|
|
759
|
+
skip: ifNotEqualTo("emptyLog")
|
|
752
760
|
}).task({
|
|
753
761
|
async handler () {
|
|
754
762
|
helpers.message("Bumping the package(s) version\n");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adbayb/stack",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.34.0-next-3f9769a",
|
|
4
4
|
"description": "My opinionated JavaScript-based toolchain",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"stack",
|
|
@@ -39,37 +39,37 @@
|
|
|
39
39
|
"templates"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@changesets/changelog-github": "^0.
|
|
43
|
-
"@changesets/cli": "^2.
|
|
44
|
-
"@commitlint/cli": "^
|
|
45
|
-
"@commitlint/config-conventional": "^
|
|
46
|
-
"@eslint-react/eslint-plugin": "^
|
|
47
|
-
"@eslint/compat": "^2.0
|
|
42
|
+
"@changesets/changelog-github": "^0.7.0",
|
|
43
|
+
"@changesets/cli": "^2.31.0",
|
|
44
|
+
"@commitlint/cli": "^21.0.1",
|
|
45
|
+
"@commitlint/config-conventional": "^21.0.1",
|
|
46
|
+
"@eslint-react/eslint-plugin": "^5.7.8",
|
|
47
|
+
"@eslint/compat": "^2.1.0",
|
|
48
48
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
49
|
-
"@vitest/eslint-plugin": "^1.6.
|
|
50
|
-
"eslint": "^10.
|
|
49
|
+
"@vitest/eslint-plugin": "^1.6.17",
|
|
50
|
+
"eslint": "^10.4.0",
|
|
51
51
|
"eslint-config-prettier": "^10.1.8",
|
|
52
52
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
53
53
|
"eslint-plugin-depend": "^1.5.0",
|
|
54
54
|
"eslint-plugin-import-x": "^4.16.2",
|
|
55
|
-
"eslint-plugin-jsdoc": "^62.
|
|
55
|
+
"eslint-plugin-jsdoc": "^62.9.0",
|
|
56
56
|
"eslint-plugin-mdx": "^3.7.0",
|
|
57
|
-
"eslint-plugin-n": "^
|
|
58
|
-
"eslint-plugin-perfectionist": "^5.
|
|
57
|
+
"eslint-plugin-n": "^18.0.1",
|
|
58
|
+
"eslint-plugin-perfectionist": "^5.9.0",
|
|
59
59
|
"eslint-plugin-prettier": "^5.5.5",
|
|
60
|
-
"eslint-plugin-sonarjs": "^4.0.
|
|
61
|
-
"eslint-plugin-unicorn": "^
|
|
60
|
+
"eslint-plugin-sonarjs": "^4.0.3",
|
|
61
|
+
"eslint-plugin-unicorn": "^64.0.0",
|
|
62
62
|
"fdir": "^6.5.0",
|
|
63
|
-
"globals": "^17.
|
|
64
|
-
"prettier": "^3.8.
|
|
63
|
+
"globals": "^17.6.0",
|
|
64
|
+
"prettier": "^3.8.3",
|
|
65
65
|
"prettier-plugin-packagejson": "^3.0.2",
|
|
66
66
|
"termost": "^1.9.0",
|
|
67
|
-
"turbo": "^2.
|
|
68
|
-
"typescript": "^6.0.
|
|
69
|
-
"typescript-eslint": "^8.
|
|
67
|
+
"turbo": "^2.9.14",
|
|
68
|
+
"typescript": "^6.0.3",
|
|
69
|
+
"typescript-eslint": "^8.59.3"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@types/node": "24.12.
|
|
72
|
+
"@types/node": "24.12.4",
|
|
73
73
|
"quickbundle": "2.16.0"
|
|
74
74
|
},
|
|
75
75
|
"publishConfig": {
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
pull-requests: write
|
|
21
21
|
steps:
|
|
22
22
|
- uses: actions/checkout@v6
|
|
23
|
-
- uses: pnpm/action-setup@
|
|
23
|
+
- uses: pnpm/action-setup@v6
|
|
24
24
|
- uses: actions/setup-node@v6
|
|
25
25
|
with:
|
|
26
26
|
cache: pnpm
|
|
@@ -30,8 +30,9 @@ jobs:
|
|
|
30
30
|
- name: Publish pre-release version(s)
|
|
31
31
|
if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
|
|
32
32
|
run: |
|
|
33
|
-
pnpm --filter="!." --filter="!./
|
|
34
|
-
|
|
33
|
+
pnpm --filter="!." --filter="!./applications/*" --filter="!./examples/*" --filter="!./tools/*" --recursive exec \
|
|
34
|
+
node -e "const fs=require('fs'),pkg=JSON.parse(fs.readFileSync('package.json'));pkg.version=pkg.version+'-next-${GITHUB_SHA::7}';fs.writeFileSync('package.json',JSON.stringify(pkg,null,2)+'\n');"
|
|
35
|
+
pnpm --filter="!." --filter="!./applications/*" --filter="!./examples/*" --filter="!./tools/*" --recursive exec pnpm publish --tag next --no-git-checks
|
|
35
36
|
- name: Create release pull request
|
|
36
37
|
if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
|
|
37
38
|
uses: changesets/action@v1
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
```
|
|
42
42
|
# Delete a previous comment when the issue has been resolved
|
|
43
43
|
- if: ${{ steps.check_pr_rule.outputs.error_message == null }}
|
|
44
|
-
uses: marocchino/sticky-pull-request-comment@
|
|
44
|
+
uses: marocchino/sticky-pull-request-comment@v3
|
|
45
45
|
with:
|
|
46
46
|
header: check_pr_comment
|
|
47
47
|
delete: true
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
git config --global user.email adbayb@gmail.com
|
|
22
22
|
git config --global user.name 'Ayoub Adib'
|
|
23
23
|
- name: Create changelog entry
|
|
24
|
-
uses: actions/github-script@
|
|
24
|
+
uses: actions/github-script@v9
|
|
25
25
|
# Credits to https://github.com/backstage/backstage/blob/bcc11651add5a2589898dfb9d665ebb9d412201b/.github/workflows/sync_renovate-changesets.yml
|
|
26
26
|
with:
|
|
27
27
|
script: |
|
|
@@ -18,8 +18,21 @@
|
|
|
18
18
|
},
|
|
19
19
|
"prettier": "@adbayb/stack/prettier",
|
|
20
20
|
"packageManager": "pnpm@{{npmVersion}}",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
21
|
+
"devEngines": {
|
|
22
|
+
"packageManager": [
|
|
23
|
+
{
|
|
24
|
+
"name": "pnpm",
|
|
25
|
+
"version": "{{npmVersion}}",
|
|
26
|
+
"onFail": "download"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "npm"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"runtime": {
|
|
33
|
+
"name": "node",
|
|
34
|
+
"version": ">=24.0.0",
|
|
35
|
+
"onFail": "error"
|
|
36
|
+
}
|
|
24
37
|
}
|
|
25
38
|
}
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
pull-requests: write
|
|
21
21
|
steps:
|
|
22
22
|
- uses: actions/checkout@v6
|
|
23
|
-
- uses: pnpm/action-setup@
|
|
23
|
+
- uses: pnpm/action-setup@v6
|
|
24
24
|
- uses: actions/setup-node@v6
|
|
25
25
|
with:
|
|
26
26
|
cache: pnpm
|
|
@@ -30,8 +30,9 @@ jobs:
|
|
|
30
30
|
- name: Publish pre-release version(s)
|
|
31
31
|
if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
|
|
32
32
|
run: |
|
|
33
|
-
pnpm --filter="!." --filter="!./
|
|
34
|
-
|
|
33
|
+
pnpm --filter="!." --filter="!./applications/*" --filter="!./examples/*" --filter="!./tools/*" --recursive exec \
|
|
34
|
+
node -e "const fs=require('fs'),pkg=JSON.parse(fs.readFileSync('package.json'));pkg.version=pkg.version+'-next-${GITHUB_SHA::7}';fs.writeFileSync('package.json',JSON.stringify(pkg,null,2)+'\n');"
|
|
35
|
+
pnpm --filter="!." --filter="!./applications/*" --filter="!./examples/*" --filter="!./tools/*" --recursive exec pnpm publish --tag next --no-git-checks
|
|
35
36
|
- name: Create release pull request
|
|
36
37
|
if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
|
|
37
38
|
uses: changesets/action@v1
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
```
|
|
42
42
|
# Delete a previous comment when the issue has been resolved
|
|
43
43
|
- if: ${{ steps.check_pr_rule.outputs.error_message == null }}
|
|
44
|
-
uses: marocchino/sticky-pull-request-comment@
|
|
44
|
+
uses: marocchino/sticky-pull-request-comment@v3
|
|
45
45
|
with:
|
|
46
46
|
header: check_pr_comment
|
|
47
47
|
delete: true
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
git config --global user.email adbayb@gmail.com
|
|
22
22
|
git config --global user.name 'Ayoub Adib'
|
|
23
23
|
- name: Create changelog entry
|
|
24
|
-
uses: actions/github-script@
|
|
24
|
+
uses: actions/github-script@v9
|
|
25
25
|
# Credits to https://github.com/backstage/backstage/blob/bcc11651add5a2589898dfb9d665ebb9d412201b/.github/workflows/sync_renovate-changesets.yml
|
|
26
26
|
with:
|
|
27
27
|
script: |
|
|
@@ -18,8 +18,21 @@
|
|
|
18
18
|
},
|
|
19
19
|
"prettier": "@adbayb/stack/prettier",
|
|
20
20
|
"packageManager": "pnpm@{{npmVersion}}",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
21
|
+
"devEngines": {
|
|
22
|
+
"packageManager": [
|
|
23
|
+
{
|
|
24
|
+
"name": "pnpm",
|
|
25
|
+
"version": "{{npmVersion}}",
|
|
26
|
+
"onFail": "download"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "npm"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"runtime": {
|
|
33
|
+
"name": "node",
|
|
34
|
+
"version": ">=24.0.0",
|
|
35
|
+
"onFail": "error"
|
|
36
|
+
}
|
|
24
37
|
}
|
|
25
38
|
}
|