diff --git a/.changeset/funny-trainers-hammer.md b/.changeset/funny-trainers-hammer.md new file mode 100644 index 000000000000..761c90d31bbf --- /dev/null +++ b/.changeset/funny-trainers-hammer.md @@ -0,0 +1,8 @@ +--- +'@sveltejs/adapter-netlify': patch +'@sveltejs/adapter-node': patch +'@sveltejs/adapter-static': patch +'create-svelte': patch +--- + +[breaking] standardize final output dir as /build (vs /.svelte-kit) diff --git a/documentation/docs/10-adapters.md b/documentation/docs/10-adapters.md index c3ccb2ce404a..235d7c89a38a 100644 --- a/documentation/docs/10-adapters.md +++ b/documentation/docs/10-adapters.md @@ -17,7 +17,7 @@ export default { }; ``` -With this, [svelte-kit build](#command-line-interface-svelte-kit-build) will generate a self-contained Node app inside `.svelte-kit/node/build`. You can pass options to adapters, such as customising the output directory in `adapter-node`: +With this, [svelte-kit build](#command-line-interface-svelte-kit-build) will generate a self-contained Node app inside `build`. You can pass options to adapters, such as customising the output directory in `adapter-node`: ```diff // svelte.config.js diff --git a/documentation/docs/80-adapter-api.md b/documentation/docs/80-adapter-api.md index 64e189720312..ef008e7b622a 100644 --- a/documentation/docs/80-adapter-api.md +++ b/documentation/docs/80-adapter-api.md @@ -34,6 +34,6 @@ Within the `adapt` method, there are a number of things that an adapter should d - Call `utils.prerender` - Put the user's static files and the generated JS/CSS in the correct location for the target platform -If possible, we recommend putting the adapter output under `'.svelte-kit/' + adapterName` with any intermediate output under `'.svelte-kit/' + adapterName + '/intermediate'`. +If possible, we recommend putting the adapter output under the `build/` directory with any intermediate output placed under `'.svelte-kit/' + adapterName`. > The adapter API may change before 1.0. diff --git a/packages/adapter-netlify/README.md b/packages/adapter-netlify/README.md index b7248d1bef4d..084ed76c40d2 100644 --- a/packages/adapter-netlify/README.md +++ b/packages/adapter-netlify/README.md @@ -32,12 +32,10 @@ Then, make sure you have a [netlify.toml](https://docs.netlify.com/configure-bui ```toml [build] command = "npm run build" - publish = ".svelte-kit/netlify/build/" - functions = ".svelte-kit/netlify/functions/" + publish = "build/publish/" + functions = "build/functions/" ``` -In this example, we placed the `build` and `functions` folders under `.svelte-kit/netlify`. If you specify another location, you will probably also want to add them to your `.gitignore`. - ## Netlify alternatives to SvelteKit functionality You may build your app using functionality provided directly by SvelteKit without relying on any Netlify functionality. Using the SvelteKit versions of these features will allow them to be used in dev mode, tested with integration tests, and to work with other adapters should you ever decide to switch away from Netlify. However, in some scenarios you may find it beneficial to use the Netlify versions of these features. One example would be if you're migrating an app that's already hosted on Netlify to SvelteKit. diff --git a/packages/adapter-netlify/files/entry.js b/packages/adapter-netlify/files/entry.js index 4f295867b9e7..4ad61b319f55 100644 --- a/packages/adapter-netlify/files/entry.js +++ b/packages/adapter-netlify/files/entry.js @@ -1,5 +1,5 @@ // TODO hardcoding the relative location makes this brittle -import { init, render } from '../../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved import { isContentTypeTextual } from '@sveltejs/kit/adapter-utils'; // eslint-disable-line import/no-unresolved init(); diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 5f8cf38edb84..24bab59a4047 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -27,11 +27,11 @@ export default function (options) { const files = fileURLToPath(new URL('./files', import.meta.url)); utils.log.minor('Generating serverless function...'); - utils.copy(join(files, 'entry.js'), '.svelte-kit/netlify/intermediate/entry.js'); + utils.copy(join(files, 'entry.js'), '.svelte-kit/netlify/entry.js'); /** @type {BuildOptions} */ const defaultOptions = { - entryPoints: ['.svelte-kit/netlify/intermediate/entry.js'], + entryPoints: ['.svelte-kit/netlify/entry.js'], outfile: join(functions, 'render/index.js'), bundle: true, inject: [join(files, 'shims.js')], diff --git a/packages/adapter-node/README.md b/packages/adapter-node/README.md index 36a6855c53bf..1b90a76740f0 100644 --- a/packages/adapter-node/README.md +++ b/packages/adapter-node/README.md @@ -14,7 +14,7 @@ export default { kit: { adapter: adapter({ // default options are shown - out: '.svelte-kit/node/build', + out: 'build', precompress: false, env: { host: 'HOST', @@ -29,7 +29,7 @@ export default { ### out -The directory to build the server to. It defaults to `.svelte-kit/node/build` — i.e. `node .svelte-kit/node/build` would start the server locally after it has been created. +The directory to build the server to. It defaults to `build` — i.e. `node build` would start the server locally after it has been created. ### precompress diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index d781c398ec31..cfc3a9b702fa 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -32,7 +32,7 @@ const pipe = promisify(pipeline); * }} options */ export default function ({ - out = '.svelte-kit/node/build', + out = 'build', precompress, env: { host: host_env = 'HOST', port: port_env = 'PORT' } = {}, esbuild: esbuildConfig @@ -54,16 +54,16 @@ export default function ({ utils.log.minor('Building server'); const files = fileURLToPath(new URL('./files', import.meta.url)); - utils.copy(files, '.svelte-kit/node/intermediate'); + utils.copy(files, '.svelte-kit/node'); writeFileSync( - '.svelte-kit/node/intermediate/env.js', + '.svelte-kit/node/env.js', `export const host = process.env[${JSON.stringify( host_env )}] || '0.0.0.0';\nexport const port = process.env[${JSON.stringify(port_env)}] || 3000;` ); /** @type {BuildOptions} */ const defaultOptions = { - entryPoints: ['.svelte-kit/node/intermediate/index.js'], + entryPoints: ['.svelte-kit/node/index.js'], outfile: join(out, 'index.js'), bundle: true, external: Object.keys(JSON.parse(readFileSync('package.json', 'utf8')).dependencies || {}), diff --git a/packages/adapter-node/rollup.config.js b/packages/adapter-node/rollup.config.js index 9b50276f8d38..51c98aa0f083 100644 --- a/packages/adapter-node/rollup.config.js +++ b/packages/adapter-node/rollup.config.js @@ -11,7 +11,7 @@ export default [ sourcemap: true }, plugins: [nodeResolve(), commonjs(), json()], - external: ['../../output/server/app.js', './env.js', ...require('module').builtinModules] + external: ['../output/server/app.js', './env.js', ...require('module').builtinModules] }, { input: 'src/shims.js', diff --git a/packages/adapter-node/src/index.js b/packages/adapter-node/src/index.js index a7e0de473c60..7a3973be9776 100644 --- a/packages/adapter-node/src/index.js +++ b/packages/adapter-node/src/index.js @@ -1,5 +1,5 @@ // TODO hardcoding the relative location makes this brittle -import { init, render } from '../../output/server/app.js'; // eslint-disable-line import/no-unresolved +import { init, render } from '../output/server/app.js'; // eslint-disable-line import/no-unresolved import { host, port } from './env.js'; // eslint-disable-line import/no-unresolved import { createServer } from './server'; diff --git a/packages/adapter-static/README.md b/packages/adapter-static/README.md index d99f705bf9e7..80cffc31840f 100644 --- a/packages/adapter-static/README.md +++ b/packages/adapter-static/README.md @@ -14,8 +14,8 @@ export default { kit: { adapter: adapter({ // default options are shown - pages: '.svelte-kit/static/build', - assets: '.svelte-kit/static/build', + pages: 'build', + assets: 'build', fallback: null }) } @@ -28,7 +28,7 @@ Unless you're in [SPA mode](#spa-mode), the adapter will attempt to prerender ev ### pages -The directory to write prerendered pages to. It defaults to `.svelte-kit/static/build`. +The directory to write prerendered pages to. It defaults to `build`. ### assets diff --git a/packages/adapter-static/index.js b/packages/adapter-static/index.js index 34337e20d3fa..5155fec1b8a6 100644 --- a/packages/adapter-static/index.js +++ b/packages/adapter-static/index.js @@ -5,7 +5,7 @@ * fallback?: string; * }} [opts] */ -export default function ({ pages = '.svelte-kit/static/build', assets = pages, fallback } = {}) { +export default function ({ pages = 'build', assets = pages, fallback } = {}) { /** @type {import('@sveltejs/kit').Adapter} */ const adapter = { name: '@sveltejs/adapter-static', diff --git a/packages/adapter-static/test/test.js b/packages/adapter-static/test/test.js index a6046041097e..16629cfa9469 100644 --- a/packages/adapter-static/test/test.js +++ b/packages/adapter-static/test/test.js @@ -4,7 +4,7 @@ import { run } from './utils.js'; run('prerendered', (test) => { test('generates HTML files', ({ cwd }) => { - assert.ok(fs.existsSync(`${cwd}/.svelte-kit/static/build/index.html`)); + assert.ok(fs.existsSync(`${cwd}/build/index.html`)); }); test('prerenders content', async ({ base, page }) => { @@ -15,15 +15,15 @@ run('prerendered', (test) => { run('spa', (test) => { test('generates a fallback page', ({ cwd }) => { - assert.ok(fs.existsSync(`${cwd}/.svelte-kit/static/build/200.html`)); + assert.ok(fs.existsSync(`${cwd}/build/200.html`)); }); test('does not prerender pages without prerender=true', ({ cwd }) => { - assert.ok(!fs.existsSync(`${cwd}/.svelte-kit/static/build/index.html`)); + assert.ok(!fs.existsSync(`${cwd}/build/index.html`)); }); test('prerenders page with prerender=true', ({ cwd }) => { - assert.ok(fs.existsSync(`${cwd}/.svelte-kit/static/build/about/index.html`)); + assert.ok(fs.existsSync(`${cwd}/build/about/index.html`)); }); test('renders content in fallback page when JS runs', async ({ base, page }) => { diff --git a/packages/adapter-static/test/utils.js b/packages/adapter-static/test/utils.js index 6b934304abea..456bb71d59b9 100644 --- a/packages/adapter-static/test/utils.js +++ b/packages/adapter-static/test/utils.js @@ -31,7 +31,7 @@ export function run(app, callback) { const cwd = fileURLToPath(new URL(`apps/${app}`, import.meta.url)); const cli_path = fileURLToPath(new URL('../../kit/src/cli.js', import.meta.url)); - rimraf(`${cwd}/.svelte-kit/static/build`); + rimraf(`${cwd}/build`); await spawn(`"${process.execPath}" ${cli_path} build`, { cwd, @@ -41,7 +41,7 @@ export function run(app, callback) { context.cwd = cwd; context.port = await ports.find(4000); - const handler = sirv(`${cwd}/.svelte-kit/static/build`, { + const handler = sirv(`${cwd}/build`, { single: '200.html' }); context.server = await create_server(context.port, handler); diff --git a/packages/create-svelte/templates/default/.gitignore b/packages/create-svelte/templates/default/.gitignore index 2d66ec056330..dad6f805d87f 100644 --- a/packages/create-svelte/templates/default/.gitignore +++ b/packages/create-svelte/templates/default/.gitignore @@ -1,4 +1,5 @@ .DS_Store node_modules +/build /.svelte-kit /package diff --git a/packages/create-svelte/templates/skeleton/.gitignore b/packages/create-svelte/templates/skeleton/.gitignore index 2d66ec056330..dad6f805d87f 100644 --- a/packages/create-svelte/templates/skeleton/.gitignore +++ b/packages/create-svelte/templates/skeleton/.gitignore @@ -1,4 +1,5 @@ .DS_Store node_modules +/build /.svelte-kit /package