Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use postinstall hook to run sync instead of prepare #5651

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/soft-masks-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'create-svelte': patch
'@sveltejs/kit': patch
---

Use @sveltejs/kit postinstall lifecycle hook to invoke 'svelte-kit sync' instead of prepare in projects created by create-svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
"dev": "vite dev",
"build": "vite build",
"package": "svelte-kit package",
"preview": "vite preview",
"prepare": "svelte-kit sync"
"preview": "vite preview"
},
"devDependencies": {
"@sveltejs/adapter-auto": "next",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
"dev": "vite dev",
"build": "vite build",
"package": "svelte-kit package",
"preview": "vite preview",
"prepare": "svelte-kit sync"
"preview": "vite preview"
},
"devDependencies": {
"@sveltejs/adapter-auto": "workspace:*",
Expand Down
3 changes: 2 additions & 1 deletion packages/kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
"test:unit": "uvu src \"(spec\\.js|test[\\\\/]index\\.js)\" -i packaging",
"test:typings": "tsc --project test/typings",
"test:packaging": "uvu src/packaging \"(spec\\.js|test[\\\\/]index\\.js)\"",
"types": "node scripts/extract-types.js"
"types": "node scripts/extract-types.js",
"postinstall": "node svelte-kit.js sync"
},
"exports": {
"./package.json": "./package.json",
Expand Down
10 changes: 7 additions & 3 deletions packages/kit/src/cli.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import fs from 'fs';
import path from 'path';
import colors from 'kleur';
import sade from 'sade';
import { load_config } from './core/config/index.js';
Expand Down Expand Up @@ -40,13 +41,16 @@ prog
.describe('Synchronise generated files')
.option('--mode', 'Specify a mode for loading environment variables', 'development')
.action(async ({ mode }) => {
if (!fs.existsSync('svelte.config.js')) {
console.warn('Missing svelte.config.js — skipping');
const is_postinstall = process.env.npm_lifecycle_event === 'postinstall';
const cwd = is_postinstall ? process.env.INIT_CWD ?? '' : process.cwd();
const svelte_config_file = path.join(cwd, 'svelte.config.js');
if (!fs.existsSync(svelte_config_file)) {
console.warn(`Missing ${svelte_config_file} — skipping`);
return;
}

try {
const config = await load_config();
const config = await load_config({ cwd });
const sync = await import('./core/sync/sync.js');
sync.all(config, mode);
} catch (error) {
Expand Down
37 changes: 36 additions & 1 deletion packages/kit/svelte-kit.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,37 @@
#!/usr/bin/env node
import './dist/cli.js';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const is_postinstall = process.env.npm_lifecycle_event === 'postinstall';
const cwd = is_postinstall ? process.env.INIT_CWD ?? '' : process.cwd();
const svelte_config_file = path.join(cwd, 'svelte.config.js');
const pkg_file = path.join(cwd, 'package.json');
let is_self = false;
let is_workspace = false;
if (is_postinstall && fs.existsSync(pkg_file)) {
try {
const pkg = JSON.parse(fs.readFileSync(pkg_file, 'utf-8'));
is_self = pkg.name === '@sveltejs/kit';
is_workspace = pkg.devDependencies?.['@sveltejs/kit']?.startsWith('workspace:') ?? false;
// TODO remove for 1.0
if (pkg.scripts?.prepare === 'svelte-kit sync') {
const message = `script "prepare": "svelte-kit sync" in ${pkg_file} is no longer needed. Remove it.`;
console.error(message);
}
} catch (e) {
// ignore, we can be sure that our own package.json exists and can be parsed, so it is not self
}
}

if (is_self || !fs.existsSync(svelte_config_file)) {
if (!is_postinstall) {
console.warn(
`Your project at ${cwd} does not have a svelte.config.js — skipping svelte-kit sync`
);
}
} else {
const cliPath = is_workspace
? fileURLToPath(new URL('./src/cli.js', import.meta.url))
: '@sveltejs/kit/dist/cli.js';
await import(cliPath);
Comment on lines +33 to +36
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should work, no?

Suggested change
const cliPath = is_workspace
? fileURLToPath(new URL('./src/cli.js', import.meta.url))
: '@sveltejs/kit/dist/cli.js';
await import(cliPath);
await import(
fileURLToPath(new URL(`./${is_workspace ? 'src' : 'dist'}/cli.js`, import.meta.url))
);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(otherwise it complains about ./dist/cli.js not being in pkg.exports)

}
3 changes: 1 addition & 2 deletions packages/kit/test/apps/amp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run test:dev && npm run test:build",
"test:dev": "cross-env DEV=true playwright test",
"test:build": "playwright test"
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/apps/basics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run test:dev && npm run test:build",
"test:dev": "rimraf test/errors.json && cross-env DEV=true playwright test",
"test:build": "rimraf test/errors.json && playwright test"
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/apps/options-2/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run test:dev && npm run test:build",
"test:dev": "cross-env DEV=true playwright test",
"test:build": "playwright test"
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/apps/options/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev -c vite.custom.config.js",
"build": "vite build -c vite.custom.config.js --mode custom",
"preview": "vite preview -c vite.custom.config.js",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run test:dev && npm run test:build",
"test:dev": "cross-env DEV=true playwright test",
"test:build": "playwright test"
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/apps/writes/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run test:dev && npm run test:build",
"test:dev": "rimraf test/errors.json && cross-env DEV=true playwright test",
"test:build": "rimraf test/errors.json && playwright test"
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/prerendering/basics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run build && uvu test"
},
"devDependencies": {
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/prerendering/fallback/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run build"
},
"devDependencies": {
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/prerendering/options/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run build && uvu test"
},
"devDependencies": {
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/prerendering/paths-base/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run build && uvu test"
},
"devDependencies": {
Expand Down
3 changes: 1 addition & 2 deletions packages/kit/test/prerendering/trailing-slash/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "node ../../cli.js sync",
"check": "tsc && svelte-check",
"check": "svelte-kit sync && tsc && svelte-check",
"test": "npm run build && uvu test"
},
"devDependencies": {
Expand Down