From 4abf700b680226a49af12e660247dd70f14b1274 Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 9 Aug 2026 11:42:15 +0800 Subject: [PATCH] feat(create-rstack): add staged file checks to templates --- .../template-app-lit-js/package.json | 1 + .../template-app-lit-js/rstack.config.js | 5 +++++ .../template-app-lit-ts/package.json | 1 + .../template-app-lit-ts/rstack.config.ts | 5 +++++ .../template-app-preact-js/package.json | 1 + .../template-app-preact-js/rstack.config.js | 5 +++++ .../template-app-preact-ts/package.json | 1 + .../template-app-preact-ts/rstack.config.ts | 5 +++++ .../template-app-react-js/package.json | 1 + .../template-app-react-js/rstack.config.js | 5 +++++ .../template-app-react-ts/package.json | 1 + .../template-app-react-ts/rstack.config.ts | 5 +++++ .../template-app-solid-js/package.json | 1 + .../template-app-solid-js/rstack.config.js | 5 +++++ .../template-app-solid-ts/package.json | 1 + .../template-app-solid-ts/rstack.config.ts | 5 +++++ .../template-app-svelte-js/package.json | 1 + .../template-app-svelte-js/rstack.config.js | 5 +++++ .../template-app-svelte-ts/package.json | 1 + .../template-app-svelte-ts/rstack.config.ts | 5 +++++ .../template-app-vanilla-js/package.json | 1 + .../template-app-vanilla-js/rstack.config.js | 5 +++++ .../template-app-vanilla-ts/package.json | 1 + .../template-app-vanilla-ts/rstack.config.ts | 5 +++++ .../template-app-vue-js/package.json | 1 + .../template-app-vue-js/rstack.config.js | 5 +++++ .../template-app-vue-ts/package.json | 1 + .../template-app-vue-ts/rstack.config.ts | 5 +++++ .../template-common/.rstack/hooks/pre-commit | 1 + .../template-doc-basic/package.json | 1 + .../template-doc-basic/rstack.config.ts | 5 +++++ .../template-doc-i18n/package.json | 1 + .../template-doc-i18n/rstack.config.ts | 5 +++++ .../template-lib-node-js/package.json | 1 + .../template-lib-node-js/rstack.config.js | 5 +++++ .../template-lib-node-ts/package.json | 1 + .../template-lib-node-ts/rstack.config.ts | 5 +++++ .../template-lib-react-js/package.json | 1 + .../template-lib-react-js/rstack.config.js | 5 +++++ .../template-lib-react-ts/package.json | 1 + .../template-lib-react-ts/rstack.config.ts | 5 +++++ .../template-lib-solid-js/package.json | 1 + .../template-lib-solid-js/rstack.config.js | 5 +++++ .../template-lib-solid-ts/package.json | 1 + .../template-lib-solid-ts/rstack.config.ts | 5 +++++ .../template-lib-svelte-js/package.json | 1 + .../template-lib-svelte-js/rstack.config.js | 5 +++++ .../template-lib-svelte-ts/package.json | 1 + .../template-lib-svelte-ts/rstack.config.ts | 5 +++++ .../template-lib-vue-js/package.json | 1 + .../template-lib-vue-js/rstack.config.js | 5 +++++ .../template-lib-vue-ts/package.json | 1 + .../template-lib-vue-ts/rstack.config.ts | 5 +++++ packages/create-rstack/tests/create.test.ts | 18 ++++++++++++++++++ 54 files changed, 175 insertions(+) create mode 100644 packages/create-rstack/template-common/.rstack/hooks/pre-commit diff --git a/packages/create-rstack/template-app-lit-js/package.json b/packages/create-rstack/template-app-lit-js/package.json index 2b5f2f65..06fd8e46 100644 --- a/packages/create-rstack/template-app-lit-js/package.json +++ b/packages/create-rstack/template-app-lit-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-lit-js/rstack.config.js b/packages/create-rstack/template-app-lit-js/rstack.config.js index d09e1329..824e6faa 100644 --- a/packages/create-rstack/template-app-lit-js/rstack.config.js +++ b/packages/create-rstack/template-app-lit-js/rstack.config.js @@ -26,3 +26,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-lit-ts/package.json b/packages/create-rstack/template-app-lit-ts/package.json index 5aa39e56..3d21ee28 100644 --- a/packages/create-rstack/template-app-lit-ts/package.json +++ b/packages/create-rstack/template-app-lit-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-lit-ts/rstack.config.ts b/packages/create-rstack/template-app-lit-ts/rstack.config.ts index cdfe0ac0..444ba029 100644 --- a/packages/create-rstack/template-app-lit-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-lit-ts/rstack.config.ts @@ -25,3 +25,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-preact-js/package.json b/packages/create-rstack/template-app-preact-js/package.json index 49d5f7c5..6ba3df66 100644 --- a/packages/create-rstack/template-app-preact-js/package.json +++ b/packages/create-rstack/template-app-preact-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-preact-js/rstack.config.js b/packages/create-rstack/template-app-preact-js/rstack.config.js index e2b64e47..2055c57c 100644 --- a/packages/create-rstack/template-app-preact-js/rstack.config.js +++ b/packages/create-rstack/template-app-preact-js/rstack.config.js @@ -27,3 +27,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-preact-ts/package.json b/packages/create-rstack/template-app-preact-ts/package.json index 56e7cd3d..cbf3e9ff 100644 --- a/packages/create-rstack/template-app-preact-ts/package.json +++ b/packages/create-rstack/template-app-preact-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-preact-ts/rstack.config.ts b/packages/create-rstack/template-app-preact-ts/rstack.config.ts index 9ee763c8..59f9c35f 100644 --- a/packages/create-rstack/template-app-preact-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-preact-ts/rstack.config.ts @@ -27,3 +27,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-react-js/package.json b/packages/create-rstack/template-app-react-js/package.json index ef4c7f83..56bebe78 100644 --- a/packages/create-rstack/template-app-react-js/package.json +++ b/packages/create-rstack/template-app-react-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-react-js/rstack.config.js b/packages/create-rstack/template-app-react-js/rstack.config.js index ddd9f056..b66daa32 100644 --- a/packages/create-rstack/template-app-react-js/rstack.config.js +++ b/packages/create-rstack/template-app-react-js/rstack.config.js @@ -27,3 +27,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-react-ts/package.json b/packages/create-rstack/template-app-react-ts/package.json index d184dd41..8ecde2cc 100644 --- a/packages/create-rstack/template-app-react-ts/package.json +++ b/packages/create-rstack/template-app-react-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-react-ts/rstack.config.ts b/packages/create-rstack/template-app-react-ts/rstack.config.ts index 356c98e1..7283fb3f 100644 --- a/packages/create-rstack/template-app-react-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-react-ts/rstack.config.ts @@ -27,3 +27,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-solid-js/package.json b/packages/create-rstack/template-app-solid-js/package.json index 784be3d5..498f1813 100644 --- a/packages/create-rstack/template-app-solid-js/package.json +++ b/packages/create-rstack/template-app-solid-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-solid-js/rstack.config.js b/packages/create-rstack/template-app-solid-js/rstack.config.js index 80b7b6f7..24220c7f 100644 --- a/packages/create-rstack/template-app-solid-js/rstack.config.js +++ b/packages/create-rstack/template-app-solid-js/rstack.config.js @@ -29,3 +29,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-solid-ts/package.json b/packages/create-rstack/template-app-solid-ts/package.json index a91b7771..2db00a96 100644 --- a/packages/create-rstack/template-app-solid-ts/package.json +++ b/packages/create-rstack/template-app-solid-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-solid-ts/rstack.config.ts b/packages/create-rstack/template-app-solid-ts/rstack.config.ts index 355d1b46..0eab6413 100644 --- a/packages/create-rstack/template-app-solid-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-solid-ts/rstack.config.ts @@ -28,3 +28,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-svelte-js/package.json b/packages/create-rstack/template-app-svelte-js/package.json index 34a71ae1..d558d23a 100644 --- a/packages/create-rstack/template-app-svelte-js/package.json +++ b/packages/create-rstack/template-app-svelte-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-svelte-js/rstack.config.js b/packages/create-rstack/template-app-svelte-js/rstack.config.js index 742edde8..a94e077b 100644 --- a/packages/create-rstack/template-app-svelte-js/rstack.config.js +++ b/packages/create-rstack/template-app-svelte-js/rstack.config.js @@ -24,3 +24,8 @@ define.fmt({ plugins: ['prettier-plugin-svelte'], singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,svelte}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-svelte-ts/package.json b/packages/create-rstack/template-app-svelte-ts/package.json index 0c65dd3d..b801870b 100644 --- a/packages/create-rstack/template-app-svelte-ts/package.json +++ b/packages/create-rstack/template-app-svelte-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-svelte-ts/rstack.config.ts b/packages/create-rstack/template-app-svelte-ts/rstack.config.ts index 66320b37..bc588121 100644 --- a/packages/create-rstack/template-app-svelte-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-svelte-ts/rstack.config.ts @@ -23,3 +23,8 @@ define.fmt({ plugins: ['prettier-plugin-svelte'], singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,svelte}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-vanilla-js/package.json b/packages/create-rstack/template-app-vanilla-js/package.json index 2074fc46..a979f11a 100644 --- a/packages/create-rstack/template-app-vanilla-js/package.json +++ b/packages/create-rstack/template-app-vanilla-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-vanilla-js/rstack.config.js b/packages/create-rstack/template-app-vanilla-js/rstack.config.js index 23e75fdf..8dc6d8c6 100644 --- a/packages/create-rstack/template-app-vanilla-js/rstack.config.js +++ b/packages/create-rstack/template-app-vanilla-js/rstack.config.js @@ -19,3 +19,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-vanilla-ts/package.json b/packages/create-rstack/template-app-vanilla-ts/package.json index c7d21790..da39cc8e 100644 --- a/packages/create-rstack/template-app-vanilla-ts/package.json +++ b/packages/create-rstack/template-app-vanilla-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-vanilla-ts/rstack.config.ts b/packages/create-rstack/template-app-vanilla-ts/rstack.config.ts index 349fcfae..a95941c8 100644 --- a/packages/create-rstack/template-app-vanilla-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-vanilla-ts/rstack.config.ts @@ -18,3 +18,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-vue-js/package.json b/packages/create-rstack/template-app-vue-js/package.json index e4b32f0a..4a08b495 100644 --- a/packages/create-rstack/template-app-vue-js/package.json +++ b/packages/create-rstack/template-app-vue-js/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-vue-js/rstack.config.js b/packages/create-rstack/template-app-vue-js/rstack.config.js index b67b85e1..94fd34f0 100644 --- a/packages/create-rstack/template-app-vue-js/rstack.config.js +++ b/packages/create-rstack/template-app-vue-js/rstack.config.js @@ -23,3 +23,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,vue}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-app-vue-ts/package.json b/packages/create-rstack/template-app-vue-ts/package.json index a93dbdc6..dca20892 100644 --- a/packages/create-rstack/template-app-vue-ts/package.json +++ b/packages/create-rstack/template-app-vue-ts/package.json @@ -9,6 +9,7 @@ "dev": "rs dev", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs preview", "test": "rs test", "test:watch": "rs test --watch" diff --git a/packages/create-rstack/template-app-vue-ts/rstack.config.ts b/packages/create-rstack/template-app-vue-ts/rstack.config.ts index f2224449..5ecfcaa5 100644 --- a/packages/create-rstack/template-app-vue-ts/rstack.config.ts +++ b/packages/create-rstack/template-app-vue-ts/rstack.config.ts @@ -22,3 +22,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,vue}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-common/.rstack/hooks/pre-commit b/packages/create-rstack/template-common/.rstack/hooks/pre-commit new file mode 100644 index 00000000..8890b966 --- /dev/null +++ b/packages/create-rstack/template-common/.rstack/hooks/pre-commit @@ -0,0 +1 @@ +rs staged diff --git a/packages/create-rstack/template-doc-basic/package.json b/packages/create-rstack/template-doc-basic/package.json index 47bbfba9..7d9b8da1 100644 --- a/packages/create-rstack/template-doc-basic/package.json +++ b/packages/create-rstack/template-doc-basic/package.json @@ -9,6 +9,7 @@ "dev": "rs doc", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs doc preview" }, "devDependencies": { diff --git a/packages/create-rstack/template-doc-basic/rstack.config.ts b/packages/create-rstack/template-doc-basic/rstack.config.ts index 466b9d5c..eed1990b 100644 --- a/packages/create-rstack/template-doc-basic/rstack.config.ts +++ b/packages/create-rstack/template-doc-basic/rstack.config.ts @@ -21,3 +21,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-doc-i18n/package.json b/packages/create-rstack/template-doc-i18n/package.json index bbe5afd6..84c3d236 100644 --- a/packages/create-rstack/template-doc-i18n/package.json +++ b/packages/create-rstack/template-doc-i18n/package.json @@ -9,6 +9,7 @@ "dev": "rs doc", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "preview": "rs doc preview" }, "devDependencies": { diff --git a/packages/create-rstack/template-doc-i18n/rstack.config.ts b/packages/create-rstack/template-doc-i18n/rstack.config.ts index 2ab17eff..c2351f95 100644 --- a/packages/create-rstack/template-doc-i18n/rstack.config.ts +++ b/packages/create-rstack/template-doc-i18n/rstack.config.ts @@ -37,3 +37,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-node-js/package.json b/packages/create-rstack/template-lib-node-js/package.json index 5fc1f1c3..9ac2e36d 100644 --- a/packages/create-rstack/template-lib-node-js/package.json +++ b/packages/create-rstack/template-lib-node-js/package.json @@ -18,6 +18,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-node-js/rstack.config.js b/packages/create-rstack/template-lib-node-js/rstack.config.js index 3f62051d..275a1554 100644 --- a/packages/create-rstack/template-lib-node-js/rstack.config.js +++ b/packages/create-rstack/template-lib-node-js/rstack.config.js @@ -19,3 +19,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-node-ts/package.json b/packages/create-rstack/template-lib-node-ts/package.json index da1900ac..0384426d 100644 --- a/packages/create-rstack/template-lib-node-ts/package.json +++ b/packages/create-rstack/template-lib-node-ts/package.json @@ -20,6 +20,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-node-ts/rstack.config.ts b/packages/create-rstack/template-lib-node-ts/rstack.config.ts index d0f94060..7d46cf4f 100644 --- a/packages/create-rstack/template-lib-node-ts/rstack.config.ts +++ b/packages/create-rstack/template-lib-node-ts/rstack.config.ts @@ -19,3 +19,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-react-js/package.json b/packages/create-rstack/template-lib-react-js/package.json index cd01c6d3..844e73d6 100644 --- a/packages/create-rstack/template-lib-react-js/package.json +++ b/packages/create-rstack/template-lib-react-js/package.json @@ -17,6 +17,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-react-js/rstack.config.js b/packages/create-rstack/template-lib-react-js/rstack.config.js index 3ef9c799..4f380fef 100644 --- a/packages/create-rstack/template-lib-react-js/rstack.config.js +++ b/packages/create-rstack/template-lib-react-js/rstack.config.js @@ -36,3 +36,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-react-ts/package.json b/packages/create-rstack/template-lib-react-ts/package.json index 12f70b66..af6541ef 100644 --- a/packages/create-rstack/template-lib-react-ts/package.json +++ b/packages/create-rstack/template-lib-react-ts/package.json @@ -19,6 +19,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-react-ts/rstack.config.ts b/packages/create-rstack/template-lib-react-ts/rstack.config.ts index 89cb5d03..981908fe 100644 --- a/packages/create-rstack/template-lib-react-ts/rstack.config.ts +++ b/packages/create-rstack/template-lib-react-ts/rstack.config.ts @@ -37,3 +37,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-solid-js/package.json b/packages/create-rstack/template-lib-solid-js/package.json index d61a43e3..a02a65f8 100644 --- a/packages/create-rstack/template-lib-solid-js/package.json +++ b/packages/create-rstack/template-lib-solid-js/package.json @@ -18,6 +18,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-solid-js/rstack.config.js b/packages/create-rstack/template-lib-solid-js/rstack.config.js index 75f1d03e..c95d0607 100644 --- a/packages/create-rstack/template-lib-solid-js/rstack.config.js +++ b/packages/create-rstack/template-lib-solid-js/rstack.config.js @@ -84,3 +84,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-solid-ts/package.json b/packages/create-rstack/template-lib-solid-ts/package.json index b634d547..a204679c 100644 --- a/packages/create-rstack/template-lib-solid-ts/package.json +++ b/packages/create-rstack/template-lib-solid-ts/package.json @@ -20,6 +20,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-solid-ts/rstack.config.ts b/packages/create-rstack/template-lib-solid-ts/rstack.config.ts index 25c187d5..9000c18a 100644 --- a/packages/create-rstack/template-lib-solid-ts/rstack.config.ts +++ b/packages/create-rstack/template-lib-solid-ts/rstack.config.ts @@ -84,3 +84,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-svelte-js/package.json b/packages/create-rstack/template-lib-svelte-js/package.json index 0d034441..f10fddf0 100644 --- a/packages/create-rstack/template-lib-svelte-js/package.json +++ b/packages/create-rstack/template-lib-svelte-js/package.json @@ -17,6 +17,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-svelte-js/rstack.config.js b/packages/create-rstack/template-lib-svelte-js/rstack.config.js index b7d7ba0f..b3b67395 100644 --- a/packages/create-rstack/template-lib-svelte-js/rstack.config.js +++ b/packages/create-rstack/template-lib-svelte-js/rstack.config.js @@ -33,3 +33,8 @@ define.fmt({ plugins: ['prettier-plugin-svelte'], singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,svelte}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-svelte-ts/package.json b/packages/create-rstack/template-lib-svelte-ts/package.json index 00504cf0..cb61131f 100644 --- a/packages/create-rstack/template-lib-svelte-ts/package.json +++ b/packages/create-rstack/template-lib-svelte-ts/package.json @@ -19,6 +19,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-svelte-ts/rstack.config.ts b/packages/create-rstack/template-lib-svelte-ts/rstack.config.ts index 3ac5f03d..97a1a22b 100644 --- a/packages/create-rstack/template-lib-svelte-ts/rstack.config.ts +++ b/packages/create-rstack/template-lib-svelte-ts/rstack.config.ts @@ -33,3 +33,8 @@ define.fmt({ plugins: ['prettier-plugin-svelte'], singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,svelte}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-vue-js/package.json b/packages/create-rstack/template-lib-vue-js/package.json index d2e3a309..ce84b389 100644 --- a/packages/create-rstack/template-lib-vue-js/package.json +++ b/packages/create-rstack/template-lib-vue-js/package.json @@ -17,6 +17,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-vue-js/rstack.config.js b/packages/create-rstack/template-lib-vue-js/rstack.config.js index 09a3de03..843b659c 100644 --- a/packages/create-rstack/template-lib-vue-js/rstack.config.js +++ b/packages/create-rstack/template-lib-vue-js/rstack.config.js @@ -32,3 +32,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,vue}': 'rs fmt', +}); diff --git a/packages/create-rstack/template-lib-vue-ts/package.json b/packages/create-rstack/template-lib-vue-ts/package.json index 86f6ae94..ee64669b 100644 --- a/packages/create-rstack/template-lib-vue-ts/package.json +++ b/packages/create-rstack/template-lib-vue-ts/package.json @@ -19,6 +19,7 @@ "dev": "rs lib --watch", "format": "rs fmt", "lint": "rs lint", + "prepare": "rs setup", "test": "rs test", "test:watch": "rs test --watch" }, diff --git a/packages/create-rstack/template-lib-vue-ts/rstack.config.ts b/packages/create-rstack/template-lib-vue-ts/rstack.config.ts index e9c37a60..2de192f7 100644 --- a/packages/create-rstack/template-lib-vue-ts/rstack.config.ts +++ b/packages/create-rstack/template-lib-vue-ts/rstack.config.ts @@ -31,3 +31,8 @@ define.lint(async () => { define.fmt({ singleQuote: true, }); + +define.staged({ + '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'], + '*.{json,jsonc,md,mdx,css,html,yml,yaml,vue}': 'rs fmt', +}); diff --git a/packages/create-rstack/tests/create.test.ts b/packages/create-rstack/tests/create.test.ts index ed4da87e..674d9a6b 100644 --- a/packages/create-rstack/tests/create.test.ts +++ b/packages/create-rstack/tests/create.test.ts @@ -21,6 +21,20 @@ const templatesWithoutTypeCheck = new Set([ const getCheckScript = (template: string, hasTypeScript: boolean): string => hasTypeScript && !templatesWithoutTypeCheck.has(template) ? tsCheckScript : jsCheckScript; +const expectStagedSetup = async ( + projectDirectory: string, + configExtension: string, + scripts: Record, +): Promise => { + expect(scripts.prepare).toBe('rs setup'); + expect( + await readFile(path.join(projectDirectory, '.rstack', 'hooks', 'pre-commit'), 'utf8'), + ).toBe('rs staged\n'); + expect( + await readFile(path.join(projectDirectory, `rstack.config.${configExtension}`), 'utf8'), + ).toContain('define.staged({'); +}; + afterEach(async () => { await Promise.all( tempDirectories.splice(0).map((directory) => rm(directory, { recursive: true, force: true })), @@ -152,6 +166,7 @@ test.each([ expect(packageJson.name).toBe('my-app'); expect(packageJson.scripts.check).toBe(getCheckScript(template, hasTypeScript)); + await expectStagedSetup(projectDirectory, configExtension, packageJson.scripts); await expect(access(path.join(projectDirectory, 'README.md'))).resolves.toBeUndefined(); await expect(access(path.join(projectDirectory, '.gitignore'))).resolves.toBeUndefined(); @@ -180,6 +195,7 @@ test('creates the doc-basic template', async () => { expect(packageJson.name).toBe('my-app'); expect(packageJson.scripts.check).toBe(tsCheckScript); + await expectStagedSetup(projectDirectory, 'ts', packageJson.scripts); await expect(access(path.join(projectDirectory, 'README.md'))).resolves.toBeUndefined(); await expect(access(path.join(projectDirectory, '.gitignore'))).resolves.toBeUndefined(); @@ -199,6 +215,7 @@ test('creates the doc-i18n template', async () => { expect(packageJson.name).toBe('my-app'); expect(packageJson.scripts.check).toBe(tsCheckScript); + await expectStagedSetup(projectDirectory, 'ts', packageJson.scripts); await expect(access(path.join(projectDirectory, 'rstack.config.ts'))).resolves.toBeUndefined(); await expect( @@ -280,6 +297,7 @@ test.each([ expect(packageJson.name).toBe('my-app'); expect(packageJson.scripts.check).toBe(getCheckScript(template, hasTypeScript)); + await expectStagedSetup(projectDirectory, configExtension, packageJson.scripts); await expect( access(path.join(projectDirectory, `rstack.config.${configExtension}`)),