mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-14 12:04:39 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7188ce0d0d | ||
|
|
4f8ce19fe1 | ||
|
|
a85f2921e8 | ||
|
|
7a2ed16884 | ||
|
|
08e575fee0 | ||
|
|
7dbcab74d3 | ||
|
|
9b1b545194 | ||
|
|
7b01242f3e | ||
|
|
15b1fbf8a6 |
@@ -1,5 +1,14 @@
|
|||||||
# sapper changelog
|
# sapper changelog
|
||||||
|
|
||||||
|
## 0.6.4
|
||||||
|
|
||||||
|
* Prevent phantom HMR requests in production mode ([#114](https://github.com/sveltejs/sapper/pull/114))
|
||||||
|
|
||||||
|
## 0.6.3
|
||||||
|
|
||||||
|
* Ignore non-HTML responses when crawling during `export`
|
||||||
|
* Build in prod mode for `export`
|
||||||
|
|
||||||
## 0.6.2
|
## 0.6.2
|
||||||
|
|
||||||
* Handle unspecified type in `sapper export`
|
* Handle unspecified type in `sapper export`
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sapper",
|
"name": "sapper",
|
||||||
"version": "0.6.2",
|
"version": "0.6.4",
|
||||||
"description": "Military-grade apps, engineered by Svelte",
|
"description": "Military-grade apps, engineered by Svelte",
|
||||||
"main": "middleware.js",
|
"main": "middleware.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
110
rollup.config.js
110
rollup.config.js
@@ -11,91 +11,27 @@ const paths = {
|
|||||||
'sapper/core.js': './core.js'
|
'sapper/core.js': './core.js'
|
||||||
};
|
};
|
||||||
|
|
||||||
export default [
|
const plugins = [
|
||||||
// cli.js
|
typescript({
|
||||||
{
|
typescript: require('typescript')
|
||||||
input: 'src/cli/index.ts',
|
})
|
||||||
output: {
|
|
||||||
file: 'cli.js',
|
|
||||||
format: 'cjs',
|
|
||||||
banner: '#!/usr/bin/env node',
|
|
||||||
paths,
|
|
||||||
sourcemap: true
|
|
||||||
},
|
|
||||||
external,
|
|
||||||
plugins: [
|
|
||||||
typescript({
|
|
||||||
typescript: require('typescript')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// core.js
|
|
||||||
{
|
|
||||||
input: 'src/core/index.ts',
|
|
||||||
output: {
|
|
||||||
file: 'core.js',
|
|
||||||
format: 'cjs',
|
|
||||||
banner: '#!/usr/bin/env node',
|
|
||||||
paths,
|
|
||||||
sourcemap: true
|
|
||||||
},
|
|
||||||
external,
|
|
||||||
plugins: [
|
|
||||||
typescript({
|
|
||||||
typescript: require('typescript')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// middleware.js
|
|
||||||
{
|
|
||||||
input: 'src/middleware/index.ts',
|
|
||||||
output: {
|
|
||||||
file: 'middleware.js',
|
|
||||||
format: 'cjs',
|
|
||||||
paths,
|
|
||||||
sourcemap: true
|
|
||||||
},
|
|
||||||
external,
|
|
||||||
plugins: [
|
|
||||||
typescript({
|
|
||||||
typescript: require('typescript')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// runtime.js
|
|
||||||
{
|
|
||||||
input: 'src/runtime/index.ts',
|
|
||||||
output: {
|
|
||||||
file: 'runtime.js',
|
|
||||||
format: 'es',
|
|
||||||
paths,
|
|
||||||
sourcemap: true
|
|
||||||
},
|
|
||||||
external,
|
|
||||||
plugins: [
|
|
||||||
typescript({
|
|
||||||
typescript: require('typescript')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// webpack/config.js
|
|
||||||
{
|
|
||||||
input: 'src/webpack/index.ts',
|
|
||||||
output: {
|
|
||||||
file: 'webpack/config.js',
|
|
||||||
format: 'cjs',
|
|
||||||
paths,
|
|
||||||
sourcemap: true
|
|
||||||
},
|
|
||||||
external,
|
|
||||||
plugins: [
|
|
||||||
typescript({
|
|
||||||
typescript: require('typescript')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{ name: 'cli', banner: true },
|
||||||
|
{ name: 'core', banner: true },
|
||||||
|
{ name: 'middleware' },
|
||||||
|
{ name: 'runtime', format: 'es' },
|
||||||
|
{ name: 'webpack', file: 'webpack/config' }
|
||||||
|
].map(obj => ({
|
||||||
|
input: `src/${obj.name}/index.ts`,
|
||||||
|
output: {
|
||||||
|
file: `${obj.file || obj.name}.js`,
|
||||||
|
format: obj.format || 'cjs',
|
||||||
|
banner: obj.banner && '#!/usr/bin/env node',
|
||||||
|
paths,
|
||||||
|
sourcemap: true
|
||||||
|
},
|
||||||
|
external,
|
||||||
|
plugins
|
||||||
|
}));
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
import { build, export as exporter } from 'sapper/core.js';
|
import { build, export as exporter } from 'sapper/core.js';
|
||||||
import { dest, dev, entry, src } from '../config';
|
import { dest, entry, isDev, src } from '../config';
|
||||||
|
|
||||||
|
process.env.NODE_ENV = 'production';
|
||||||
|
|
||||||
const cmd = process.argv[2];
|
const cmd = process.argv[2];
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
|
const dev = isDev();
|
||||||
|
|
||||||
if (cmd === 'build') {
|
if (cmd === 'build') {
|
||||||
build({ dest, dev, entry, src })
|
build({ dest, dev, entry, src })
|
||||||
@@ -14,9 +17,7 @@ if (cmd === 'build') {
|
|||||||
console.error(err ? err.details || err.stack || err.message || err : 'Unknown error');
|
console.error(err ? err.details || err.stack || err.message || err : 'Unknown error');
|
||||||
});
|
});
|
||||||
} else if (cmd === 'export') {
|
} else if (cmd === 'export') {
|
||||||
const start = Date.now();
|
build({ dest, dev: false, entry, src })
|
||||||
|
|
||||||
build({ dest, dev, entry, src })
|
|
||||||
.then(() => exporter({ src, dest }))
|
.then(() => exporter({ src, dest }))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
const elapsed = Date.now() - start;
|
const elapsed = Date.now() - start;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
export const dev = process.env.NODE_ENV !== 'production';
|
export const isDev = () => process.env.NODE_ENV !== 'production';
|
||||||
|
|
||||||
export const templates = path.resolve(process.env.SAPPER_TEMPLATES || 'templates');
|
export const templates = path.resolve(process.env.SAPPER_TEMPLATES || 'templates');
|
||||||
export const src = path.resolve(process.env.SAPPER_ROUTES || 'routes');
|
export const src = path.resolve(process.env.SAPPER_ROUTES || 'routes');
|
||||||
|
|||||||
@@ -63,7 +63,8 @@ export default function exporter({ src, dest }) { // TODO dest is a terrible nam
|
|||||||
return fetch(url, opts);
|
return fetch(url, opts);
|
||||||
};
|
};
|
||||||
|
|
||||||
app.use(require('./middleware')()); // TODO this is filthy
|
const middleware = require('./middleware')({ dev: false }); // TODO this is filthy
|
||||||
|
app.use(middleware);
|
||||||
const server = app.listen(PORT);
|
const server = app.listen(PORT);
|
||||||
|
|
||||||
const seen = new Set();
|
const seen = new Set();
|
||||||
@@ -77,19 +78,21 @@ export default function exporter({ src, dest }) { // TODO dest is a terrible nam
|
|||||||
return fetch(url.href)
|
return fetch(url.href)
|
||||||
.then(r => {
|
.then(r => {
|
||||||
save(r);
|
save(r);
|
||||||
return r.text();
|
|
||||||
})
|
|
||||||
.then(body => {
|
|
||||||
const $ = cheerio.load(body);
|
|
||||||
const hrefs = [];
|
|
||||||
|
|
||||||
$('a[href]').each((i, $a) => {
|
if (r.headers.get('Content-Type') === 'text/html') {
|
||||||
hrefs.push($a.attribs.href);
|
return r.text().then(body => {
|
||||||
});
|
const $ = cheerio.load(body);
|
||||||
|
const hrefs = [];
|
||||||
|
|
||||||
return hrefs.reduce((promise, href) => {
|
$('a[href]').each((i, $a) => {
|
||||||
return promise.then(() => handle(new URL(href, url.href)));
|
hrefs.push($a.attribs.href);
|
||||||
}, Promise.resolve());
|
});
|
||||||
|
|
||||||
|
return hrefs.reduce((promise, href) => {
|
||||||
|
return promise.then(() => handle(new URL(href, url.href)));
|
||||||
|
}, Promise.resolve());
|
||||||
|
});
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.error(`Error rendering ${url.pathname}: ${err.message}`);
|
console.error(`Error rendering ${url.pathname}: ${err.message}`);
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import rimraf from 'rimraf';
|
|||||||
import serialize from 'serialize-javascript';
|
import serialize from 'serialize-javascript';
|
||||||
import escape_html from 'escape-html';
|
import escape_html from 'escape-html';
|
||||||
import { create_routes, templates, create_compilers, create_assets } from 'sapper/core.js';
|
import { create_routes, templates, create_compilers, create_assets } from 'sapper/core.js';
|
||||||
|
import { dest, entry, isDev, src } from '../config';
|
||||||
import create_watcher from './create_watcher';
|
import create_watcher from './create_watcher';
|
||||||
import { dest, dev, entry, src } from '../config';
|
|
||||||
|
const dev = isDev();
|
||||||
|
|
||||||
function connect_dev() {
|
function connect_dev() {
|
||||||
mkdirp.sync(dest);
|
mkdirp.sync(dest);
|
||||||
@@ -122,7 +124,9 @@ function connect_prod() {
|
|||||||
return middleware;
|
return middleware;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default dev ? connect_dev : connect_prod;
|
export default function connect({ dev: _dev = dev } = {}) {
|
||||||
|
return _dev ? connect_dev() : connect_prod();
|
||||||
|
}
|
||||||
|
|
||||||
function set_req_pathname(req, res, next) {
|
function set_req_pathname(req, res, next) {
|
||||||
req.pathname = req.url.replace(/\?.*/, '');
|
req.pathname = req.url.replace(/\?.*/, '');
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { dest, dev, entry } from '../config';
|
import { dest, isDev, entry } from '../config';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
dev,
|
dev: isDev(),
|
||||||
|
|
||||||
client: {
|
client: {
|
||||||
entry: () => {
|
entry: () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user