diff --git a/.changeset/hungry-flowers-hope.md b/.changeset/hungry-flowers-hope.md new file mode 100644 index 000000000000..bfa4306d1f9e --- /dev/null +++ b/.changeset/hungry-flowers-hope.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Only run postinstall script if package.json exists diff --git a/packages/kit/postinstall.js b/packages/kit/postinstall.js index 398eb37cd24a..03d5307b4041 100644 --- a/packages/kit/postinstall.js +++ b/packages/kit/postinstall.js @@ -4,35 +4,44 @@ import glob from 'tiny-glob/sync.js'; import { load_config } from './src/core/config/index.js'; import * as sync from './src/core/sync/sync.js'; -const cwd = process.env.INIT_CWD ?? process.cwd(); -process.chdir(cwd); +try { + const cwd = process.env.INIT_CWD ?? process.cwd(); + process.chdir(cwd); -const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + if (fs.existsSync('package.json')) { + const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); -const directories = []; + const directories = []; -if (pkg.workspaces) { - for (const directory of pkg.workspaces) { - directories.push(...glob(directory, { cwd }).map((dir) => path.resolve(cwd, dir))); - } -} else { - directories.push(cwd); -} + if (pkg.workspaces) { + // we have to do this because of https://classic.yarnpkg.com/blog/2018/02/15/nohoist/ + const packages = Array.isArray(pkg.workspaces) ? pkg.workspaces : pkg.workspaces.packages; -for (const cwd of directories) { - process.chdir(cwd); + for (const directory of packages) { + directories.push(...glob(directory, { cwd }).map((dir) => path.resolve(cwd, dir))); + } + } else { + directories.push(cwd); + } + + for (const cwd of directories) { + process.chdir(cwd); - if (!fs.existsSync('package.json')) continue; - if (!fs.existsSync('svelte.config.js')) continue; + if (!fs.existsSync('package.json')) continue; + if (!fs.existsSync('svelte.config.js')) continue; - const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); - if (!pkg.dependencies?.['@sveltejs/kit'] && !pkg.devDependencies?.['@sveltejs/kit']) continue; + const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + if (!pkg.dependencies?.['@sveltejs/kit'] && !pkg.devDependencies?.['@sveltejs/kit']) continue; - try { - const config = await load_config(); - await sync.all(config, 'development'); - } catch (e) { - console.log('Error while trying to sync SvelteKit config'); - console.log(e); + try { + const config = await load_config(); + await sync.all(config, 'development'); + } catch (error) { + console.log('Error while trying to sync SvelteKit config'); + console.log(error.stack); + } + } } +} catch (error) { + console.error(error.stack); }