diff --git a/.changeset/soft-masks-trade.md b/.changeset/soft-masks-trade.md new file mode 100644 index 000000000000..36c01cfaa824 --- /dev/null +++ b/.changeset/soft-masks-trade.md @@ -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 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d68d443f9cf6..5691cd5e558b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest env: # not needed for linting - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1" + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: '1' steps: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2.2.2 @@ -38,7 +38,7 @@ jobs: fail-fast: false matrix: node-version: [16] - os: [ubuntu-latest , windows-latest] + os: [ubuntu-latest, windows-latest] e2e-browser: ['chromium'] include: - node-version: 16 @@ -53,7 +53,7 @@ jobs: env: TURBO_CACHE_KEY: ${{ matrix.os }}-${{ matrix.node-version }} # Install playwright's binray under node_modules so it will be cached together - PLAYWRIGHT_BROWSERS_PATH: "0" + PLAYWRIGHT_BROWSERS_PATH: '0' KIT_E2E_BROWSER: ${{matrix.e2e-browser}} steps: - run: git config --global core.autocrlf false diff --git a/packages/create-svelte/templates/default/package.template.json b/packages/create-svelte/templates/default/package.template.json index 1fb109ee082f..3e51b6a62117 100644 --- a/packages/create-svelte/templates/default/package.template.json +++ b/packages/create-svelte/templates/default/package.template.json @@ -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", diff --git a/packages/create-svelte/templates/skeleton/package.template.json b/packages/create-svelte/templates/skeleton/package.template.json index 095414961acb..6168c971b6ac 100644 --- a/packages/create-svelte/templates/skeleton/package.template.json +++ b/packages/create-svelte/templates/skeleton/package.template.json @@ -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:*", diff --git a/packages/kit/package.json b/packages/kit/package.json index d673007135a4..794c8d603faf 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -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", diff --git a/packages/kit/src/cli.js b/packages/kit/src/cli.js index 7168b2a67d67..e5d88164e640 100755 --- a/packages/kit/src/cli.js +++ b/packages/kit/src/cli.js @@ -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'; @@ -40,13 +41,30 @@ 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 event = process.env.npm_lifecycle_event; + + // TODO remove for 1.0 + if (event === 'prepare') { + const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + const message = + pkg.scripts.prepare === 'svelte-kit sync' + ? `\`svelte-kit sync\` now runs on "postinstall" — please remove the "prepare" script from your package.json\n` + : `\`svelte-kit sync\` now runs on "postinstall" — please remove it from your "prepare" script\n`; + + console.error(colors.bold().red(message)); + return; + } + + const cwd = event === '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) { diff --git a/packages/kit/svelte-kit.js b/packages/kit/svelte-kit.js index d17768a371d7..bc94d37d31d6 100755 --- a/packages/kit/svelte-kit.js +++ b/packages/kit/svelte-kit.js @@ -1,2 +1,11 @@ #!/usr/bin/env node -import './dist/cli.js'; +import fs from 'fs'; +import { fileURLToPath } from 'url'; + +// in our own CI, and when deploying directly from this monorepo, +// the `dist` directory will not exist yet +if (fs.existsSync(fileURLToPath(new URL('./dist', import.meta.url)))) { + import('./dist/cli.js'); +} else { + console.error('Run "pnpm build" and try running this command again'); +} diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 9e3ce6607092..ea35010815f5 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run test:dev && npm run test:build", "test:dev": "cross-env DEV=true playwright test", "test:build": "playwright test" diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index eee4f24d884a..dfa4862f57ec 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && 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" diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index 1c2dc5e57fd8..df605763d4f0 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run test:dev && npm run test:build", "test:dev": "cross-env DEV=true playwright test", "test:build": "playwright test" diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 662c1ac6a470..2b927be74002 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -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": "node ../../cli.js && tsc && svelte-check", "test": "npm run test:dev && npm run test:build", "test:dev": "cross-env DEV=true playwright test", "test:build": "playwright test" diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 6feb75ddee38..f07e6655f6b2 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && 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" diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index aa2545571454..db8df5f35cc4 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run build && uvu test" }, "devDependencies": { diff --git a/packages/kit/test/prerendering/fallback/package.json b/packages/kit/test/prerendering/fallback/package.json index e8befc6b7305..ee20095cd9d8 100644 --- a/packages/kit/test/prerendering/fallback/package.json +++ b/packages/kit/test/prerendering/fallback/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run build" }, "devDependencies": { diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 66aae51545ab..71a5279c38ba 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run build && uvu test" }, "devDependencies": { diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index e4cf5e4869fe..465028077b7b 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run build && uvu test" }, "devDependencies": { diff --git a/packages/kit/test/prerendering/trailing-slash/package.json b/packages/kit/test/prerendering/trailing-slash/package.json index ea720b7056c7..b0073089142f 100644 --- a/packages/kit/test/prerendering/trailing-slash/package.json +++ b/packages/kit/test/prerendering/trailing-slash/package.json @@ -6,8 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", - "prepare": "node ../../cli.js sync", - "check": "tsc && svelte-check", + "check": "node ../../cli.js && tsc && svelte-check", "test": "npm run build && uvu test" }, "devDependencies": {