Skip to content

Commit 8805c6d

Browse files
author
Rich Harris
authored
Pass adapters directly to config (#579)
* pass adapters directly to config * changeset * update docs
1 parent 04f17f5 commit 8805c6d

File tree

33 files changed

+226
-109
lines changed

33 files changed

+226
-109
lines changed

Diff for: .changeset/tough-lamps-brake.md

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
'@sveltejs/adapter-begin': patch
3+
'@sveltejs/adapter-netlify': patch
4+
'@sveltejs/adapter-node': patch
5+
'@sveltejs/adapter-static': patch
6+
'@sveltejs/adapter-vercel': patch
7+
'create-svelte': patch
8+
'@sveltejs/kit': patch
9+
---
10+
11+
Pass adapters directly to svelte.config.cjs

Diff for: documentation/docs/10-adapters.md

+13-12
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ For example, if you want to run your app as a simple Node server, you would use
88

99
```js
1010
// svelte.config.cjs
11+
const node = require('@sveltejs/adapter-node');
12+
1113
module.exports = {
1214
kit: {
13-
adapter: '@sveltejs/adapter-node'
15+
adapter: node()
1416
}
1517
};
1618
```
@@ -19,26 +21,25 @@ With this, [svelte-kit build](#command-line-interface-svelte-kit-build) will gen
1921

2022
```diff
2123
// svelte.config.cjs
24+
const node = require('@sveltejs/adapter-node');
25+
2226
module.exports = {
2327
kit: {
24-
- adapter: '@sveltejs/adapter-node'
25-
+ adapter: ['@sveltejs/adapter-node', {
26-
+ out: 'my-output-directory'
27-
+ }]
28+
- adapter: node()
29+
+ adapter: node({ out: 'my-output-directory' })
2830
}
2931
};
3032
```
3133

3234
A variety of official adapters exist for serverless platforms...
3335

34-
* [`adapter-begin`](https://github.com/sveltejs/kit/tree/master/packages/adapter-begin) — for [begin.com](https://begin.com)
35-
* [`adapter-netlify`](https://github.com/sveltejs/kit/tree/master/packages/adapter-netlify) — for [netlify.com](https://netlify.com)
36-
* [`adapter-vercel`](https://github.com/sveltejs/kit/tree/master/packages/adapter-vercel) — for [vercel.com](https://vercel.com)
36+
- [`adapter-begin`](https://github.com/sveltejs/kit/tree/master/packages/adapter-begin) — for [begin.com](https://begin.com)
37+
- [`adapter-netlify`](https://github.com/sveltejs/kit/tree/master/packages/adapter-netlify) — for [netlify.com](https://netlify.com)
38+
- [`adapter-vercel`](https://github.com/sveltejs/kit/tree/master/packages/adapter-vercel) — for [vercel.com](https://vercel.com)
3739

3840
...and others:
3941

40-
* [`adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) — for creating self-contained Node apps
41-
* [`adapter-static`](https://github.com/sveltejs/kit/tree/master/packages/adapter-static) — for prerendering your entire site as a collection of static files
42-
42+
- [`adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) — for creating self-contained Node apps
43+
- [`adapter-static`](https://github.com/sveltejs/kit/tree/master/packages/adapter-static) — for prerendering your entire site as a collection of static files
4344

44-
> The adapter API is still in flux and will likely change before 1.0.
45+
> The adapter API is still in flux and will likely change before 1.0.

Diff for: documentation/docs/13-configuration.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ module.exports = {
4848

4949
#### adapter
5050

51-
Determines how the output of `svelte-kit build` is converted for different platforms. Can be specified as a `string` or a `[string, object]` tuple if you need to pass options.
51+
Determines how the output of `svelte-kit build` is converted for different platforms. See [Adapters](#adapters).
5252

5353
#### amp
5454

Diff for: examples/hn.svelte.dev/svelte.config.cjs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
const netlify = require('@sveltejs/adapter-netlify');
2+
13
module.exports = {
24
kit: {
3-
adapter: '@sveltejs/adapter-netlify',
5+
adapter: netlify(),
46
target: '#svelte'
57
}
68
};

Diff for: examples/realworld.svelte.dev/svelte.config.cjs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
const node = require('@sveltejs/adapter-node');
2+
13
module.exports = {
24
kit: {
35
// By default, `npm run build` will create a standard Node app.
46
// You can create optimized builds for different platforms by
57
// specifying a different adapter
6-
adapter: '@sveltejs/adapter-node',
8+
adapter: node(),
79

810
// hydrate the <div id="svelte"> element in src/app.html
911
target: '#svelte',

Diff for: examples/sandbox/svelte.config.cjs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
const node = require('@sveltejs/adapter-node');
12
const pkg = require('./package.json');
23

34
module.exports = {
45
kit: {
5-
adapter: '@sveltejs/adapter-node',
6+
adapter: node(),
67
target: '#svelte',
78
vite: {
89
build: {

Diff for: examples/svelte-kit-demo/svelte.config.cjs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
const node = require('@sveltejs/adapter-node');
2+
13
module.exports = {
24
kit: {
3-
adapter: '@sveltejs/adapter-node',
5+
adapter: node(),
46
target: '#svelte'
57
}
68
};

Diff for: packages/adapter-begin/.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
.DS_Store
22
node_modules
3-
/files
3+
/files
4+
/index.cjs
5+
/index.cjs.map

Diff for: packages/adapter-begin/index.js

+12-8
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,29 @@ import { copy } from '@sveltejs/app-utils/files';
33
import { resolve, join } from 'path';
44
import parse from '@architect/parser';
55

6-
function parse_arc(arcPath) {
7-
if (!existsSync(arcPath)) {
8-
throw new Error(`No ${arcPath} found. See the documentation.`);
6+
/** @param {string} file */
7+
function parse_arc(file) {
8+
if (!existsSync(file)) {
9+
throw new Error(`No ${file} found. See the documentation.`);
910
}
1011

1112
try {
12-
const text = readFileSync(arcPath).toString();
13+
const text = readFileSync(file).toString();
1314
const arc = parse(text);
1415

1516
return {
1617
static: arc.static[0][1]
1718
};
1819
} catch (e) {
19-
throw new Error(
20-
`Error parsing ${arcPath}. Please consult the documentation for correct syntax.`
21-
);
20+
throw new Error(`Error parsing ${file}. Please consult the documentation for correct syntax.`);
2221
}
2322
}
2423

2524
export default function () {
26-
return {
25+
/** @type {import('@sveltejs/kit').Adapter} */
26+
const adapter = {
27+
name: '@sveltejs/adapter-begin',
28+
2729
async adapt(builder) {
2830
builder.log.minor('Parsing app.arc file');
2931
const { static: static_mount_point } = parse_arc('app.arc');
@@ -49,4 +51,6 @@ export default function () {
4951
});
5052
}
5153
};
54+
55+
return adapter;
5256
}

Diff for: packages/adapter-begin/package.json

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
{
22
"name": "@sveltejs/adapter-begin",
33
"version": "1.0.0-next.3",
4-
"main": "index.js",
4+
"main": "index.cjs",
55
"scripts": {
66
"lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format",
77
"dev": "rollup -cw",
88
"build": "rollup -c",
99
"format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore",
10-
"check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore"
10+
"check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore",
11+
"prepublishOnly": "npm run build"
1112
},
1213
"files": [
1314
"files"
@@ -17,7 +18,13 @@
1718
"@sveltejs/app-utils": "workspace:*"
1819
},
1920
"devDependencies": {
21+
"@sveltejs/kit": "workspace:*",
2022
"rollup": "^2.41.1",
21-
"sirv": "^1.0.11"
23+
"sirv": "^1.0.11",
24+
"typescript": "^4.2.3"
25+
},
26+
"exports": {
27+
"import": "./index.js",
28+
"require": "./index.cjs"
2229
}
2330
}

Diff for: packages/adapter-begin/rollup.config.js

+24-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
11
import { nodeResolve } from '@rollup/plugin-node-resolve';
22
import commonjs from '@rollup/plugin-commonjs';
33

4-
export default {
5-
input: 'src/index.js',
6-
output: {
7-
file: 'files/index.js',
8-
format: 'cjs',
9-
sourcemap: true,
10-
exports: 'named'
4+
export default [
5+
{
6+
input: 'src/index.js',
7+
output: {
8+
file: 'files/index.js',
9+
format: 'cjs',
10+
sourcemap: true,
11+
exports: 'named'
12+
},
13+
plugins: [nodeResolve(), commonjs()],
14+
external: [...require('module').builtinModules, '@architect/shared/app.js']
1115
},
12-
plugins: [nodeResolve(), commonjs()],
13-
external: [...require('module').builtinModules, '@architect/shared/app.js']
14-
};
16+
17+
{
18+
input: 'index.js',
19+
output: {
20+
file: 'index.cjs',
21+
format: 'cjs',
22+
sourcemap: true,
23+
exports: 'named'
24+
},
25+
plugins: [nodeResolve(), commonjs()],
26+
external: [...require('module').builtinModules, '@architect/parser']
27+
}
28+
];

Diff for: packages/adapter-begin/tsconfig.json

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"compilerOptions": {
3+
"allowJs": true,
4+
"checkJs": true,
5+
"noEmit": true,
6+
"noImplicitAny": true,
7+
"target": "es2020",
8+
"module": "es2020",
9+
"moduleResolution": "node",
10+
"allowSyntheticDefaultImports": true
11+
},
12+
"include": ["./index.js", "src"]
13+
}

Diff for: packages/adapter-netlify/index.js

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { existsSync, readFileSync, copyFileSync, writeFileSync, renameSync } from 'fs';
2-
import { dirname, resolve } from 'path';
3-
import toml from 'toml';
4-
import { fileURLToPath } from 'url';
1+
const { existsSync, readFileSync, copyFileSync, writeFileSync, renameSync } = require('fs');
2+
const { resolve } = require('path');
3+
const toml = require('toml');
54

6-
const __dirname = dirname(fileURLToPath(import.meta.url));
5+
module.exports = function () {
6+
/** @type {import('@sveltejs/kit').Adapter} */
7+
const adapter = {
8+
name: '@sveltejs/adapter-netlify',
79

8-
export default function () {
9-
return {
1010
async adapt(builder) {
1111
let netlify_config;
1212

@@ -60,4 +60,6 @@ export default function () {
6060
});
6161
}
6262
};
63-
}
63+
64+
return adapter;
65+
};

Diff for: packages/adapter-netlify/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "@sveltejs/adapter-netlify",
33
"version": "1.0.0-next.3",
44
"main": "index.js",
5-
"type": "module",
65
"files": [
76
"files"
87
],
@@ -13,5 +12,9 @@
1312
},
1413
"dependencies": {
1514
"toml": "^3.0.0"
15+
},
16+
"devDependencies": {
17+
"@sveltejs/kit": "workspace:*",
18+
"typescript": "^4.2.3"
1619
}
1720
}

Diff for: packages/adapter-netlify/tsconfig.json

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"compilerOptions": {
3+
"allowJs": true,
4+
"checkJs": true,
5+
"noEmit": true,
6+
"noImplicitAny": true,
7+
"target": "es2020",
8+
"module": "es2020",
9+
"moduleResolution": "node",
10+
"allowSyntheticDefaultImports": true
11+
},
12+
"include": ["./index.js", "src"]
13+
}

Diff for: packages/adapter-node/index.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
import { copyFileSync } from 'fs';
2-
import { dirname, join } from 'path';
3-
import { fileURLToPath } from 'url';
1+
const { copyFileSync } = require('fs');
2+
const { join } = require('path');
43

54
/**
65
* @param {{
76
* out?: string;
87
* }} options
98
*/
10-
export default function ({ out = 'build' } = {}) {
9+
module.exports = function ({ out = 'build' } = {}) {
1110
/** @type {import('@sveltejs/kit').Adapter} */
1211
const adapter = {
13-
async adapt(builder) {
14-
const dir = dirname(fileURLToPath(import.meta.url));
12+
name: '@sveltejs/adapter-node',
1513

14+
async adapt(builder) {
1615
builder.log.minor('Copying assets');
1716
const static_directory = join(out, 'assets');
1817
builder.copy_client_files(static_directory);
@@ -21,7 +20,7 @@ export default function ({ out = 'build' } = {}) {
2120
builder.log.minor('Copying server');
2221
builder.copy_server_files(out);
2322

24-
copyFileSync(`${dir}/files/server.js`, `${out}/index.js`);
23+
copyFileSync(`${__dirname}/files/server.js`, `${out}/index.js`);
2524

2625
builder.log.minor('Prerendering static pages');
2726
await builder.prerender({
@@ -31,4 +30,4 @@ export default function ({ out = 'build' } = {}) {
3130
};
3231

3332
return adapter;
34-
}
33+
};

Diff for: packages/adapter-node/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "@sveltejs/adapter-node",
33
"version": "1.0.0-next.8",
44
"main": "index.js",
5-
"type": "module",
65
"files": [
76
"files"
87
],

Diff for: packages/adapter-static/index.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
export default function ({ pages = 'build', assets = 'build' } = {}) {
2-
return {
1+
module.exports = function ({ pages = 'build', assets = 'build' } = {}) {
2+
/** @type {import('@sveltejs/kit').Adapter} */
3+
const adapter = {
4+
name: '@sveltejs/adapter-static',
5+
36
async adapt(builder) {
47
builder.copy_static_files(assets);
58
builder.copy_client_files(assets);
@@ -10,4 +13,6 @@ export default function ({ pages = 'build', assets = 'build' } = {}) {
1013
});
1114
}
1215
};
13-
}
16+
17+
return adapter;
18+
};

Diff for: packages/adapter-static/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{
22
"name": "@sveltejs/adapter-static",
33
"version": "1.0.0-next.3",
4-
"type": "module",
54
"scripts": {
65
"lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format",
76
"format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore",
87
"check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore"
8+
},
9+
"devDependencies": {
10+
"@sveltejs/kit": "workspace:*",
11+
"typescript": "^4.2.3"
912
}
1013
}

0 commit comments

Comments
 (0)