From b1f9d645aa89056f00eabc8b948b618d3f0cf3db Mon Sep 17 00:00:00 2001 From: AdrianGonz97 <31664583+AdrianGonz97@users.noreply.github.com> Date: Sun, 20 Apr 2025 14:21:08 -0400 Subject: [PATCH 1/3] install node types for drizzle and storybook --- packages/addons/common.ts | 20 ++++++++++++++++++++ packages/addons/drizzle/index.ts | 2 ++ packages/addons/storybook/index.ts | 2 ++ 3 files changed, 24 insertions(+) diff --git a/packages/addons/common.ts b/packages/addons/common.ts index 5795e133..a223218b 100644 --- a/packages/addons/common.ts +++ b/packages/addons/common.ts @@ -1,5 +1,6 @@ import { imports, exports, common } from '@sveltejs/cli-core/js'; import { parseScript, parseSvelte } from '@sveltejs/cli-core/parsers'; +import process from 'node:process'; export function addEslintConfigPrettier(content: string): string { const { ast, generateCode } = parseScript(content); @@ -75,3 +76,22 @@ export function addToDemoPage(content: string, path: string): string { const src = template.source + `${newLine}${path}`; return generateCode({ template: src }); } + +/** + * Returns the corresponding `@types/node` version for the version of Node.js running in the current process. + * + * If the installed version of Node.js is from a `Current` release, then the major is decremented to + * the nearest `LTS` release version. + */ +export function getNodeTypesVersion(): string { + const nodeVersion = process.versions.node; + const [major] = nodeVersion.split('.'); + + const isLTS = Number(major) % 2 === 0; + if (isLTS) { + return `^${nodeVersion}`; + } + + const previousLTSMajor = Number(major) - 1; + return `^${previousLTSMajor}`; +} diff --git a/packages/addons/drizzle/index.ts b/packages/addons/drizzle/index.ts index ed1810b2..859e418a 100644 --- a/packages/addons/drizzle/index.ts +++ b/packages/addons/drizzle/index.ts @@ -1,6 +1,7 @@ import { common, exports, functions, imports, object, variables } from '@sveltejs/cli-core/js'; import { defineAddon, defineAddonOptions, dedent, type OptionValues } from '@sveltejs/cli-core'; import { parseJson, parseScript } from '@sveltejs/cli-core/parsers'; +import { getNodeTypesVersion } from '../common.ts'; const PORTS = { mysql: '3306', @@ -76,6 +77,7 @@ export default defineAddon({ sv.dependency('drizzle-orm', '^0.40.0'); sv.devDependency('drizzle-kit', '^0.30.2'); + sv.devDependency('@types/node', getNodeTypesVersion()); // MySQL if (options.mysql === 'mysql2') sv.dependency('mysql2', '^3.12.0'); diff --git a/packages/addons/storybook/index.ts b/packages/addons/storybook/index.ts index 82edb41f..d75ffcf0 100644 --- a/packages/addons/storybook/index.ts +++ b/packages/addons/storybook/index.ts @@ -1,4 +1,5 @@ import { defineAddon } from '@sveltejs/cli-core'; +import { getNodeTypesVersion } from '../common.ts'; export default defineAddon({ id: 'storybook', @@ -7,5 +8,6 @@ export default defineAddon({ options: {}, run: async ({ sv }) => { await sv.execute(['storybook@latest', 'init', '--skip-install', '--no-dev'], 'inherit'); + sv.devDependency(`@types/node`, getNodeTypesVersion()); } }); From 118384ffeecad53bf136de3bd56faeb7e19708e7 Mon Sep 17 00:00:00 2001 From: AdrianGonz97 <31664583+AdrianGonz97@users.noreply.github.com> Date: Sun, 20 Apr 2025 14:22:09 -0400 Subject: [PATCH 2/3] changeset --- .changeset/odd-bikes-like.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/odd-bikes-like.md diff --git a/.changeset/odd-bikes-like.md b/.changeset/odd-bikes-like.md new file mode 100644 index 00000000..72aed1bb --- /dev/null +++ b/.changeset/odd-bikes-like.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix: add `@types/node` as a dev dependency to the `drizzle` and `storybook` add-ons From fd2beb773ce5ba1e86b39b1159d458982f15d094 Mon Sep 17 00:00:00 2001 From: AdrianGonz97 <31664583+AdrianGonz97@users.noreply.github.com> Date: Sun, 20 Apr 2025 15:04:46 -0400 Subject: [PATCH 3/3] exclude minor and patch --- packages/addons/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/addons/common.ts b/packages/addons/common.ts index a223218b..90fb9eba 100644 --- a/packages/addons/common.ts +++ b/packages/addons/common.ts @@ -89,7 +89,7 @@ export function getNodeTypesVersion(): string { const isLTS = Number(major) % 2 === 0; if (isLTS) { - return `^${nodeVersion}`; + return `^${major}`; } const previousLTSMajor = Number(major) - 1;