mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-13 11:35:28 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7188ce0d0d | ||
|
|
4f8ce19fe1 | ||
|
|
a85f2921e8 | ||
|
|
7a2ed16884 | ||
|
|
08e575fee0 | ||
|
|
7dbcab74d3 | ||
|
|
9b1b545194 | ||
|
|
7b01242f3e | ||
|
|
15b1fbf8a6 |
@@ -1,5 +1,14 @@
|
||||
# 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
|
||||
|
||||
* Handle unspecified type in `sapper export`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sapper",
|
||||
"version": "0.6.2",
|
||||
"version": "0.6.4",
|
||||
"description": "Military-grade apps, engineered by Svelte",
|
||||
"main": "middleware.js",
|
||||
"bin": {
|
||||
|
||||
108
rollup.config.js
108
rollup.config.js
@@ -11,91 +11,27 @@ const paths = {
|
||||
'sapper/core.js': './core.js'
|
||||
};
|
||||
|
||||
const plugins = [
|
||||
typescript({
|
||||
typescript: require('typescript')
|
||||
})
|
||||
];
|
||||
|
||||
export default [
|
||||
// cli.js
|
||||
{
|
||||
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')
|
||||
})
|
||||
]
|
||||
{ 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
|
||||
},
|
||||
|
||||
// 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')
|
||||
})
|
||||
]
|
||||
}
|
||||
];
|
||||
external,
|
||||
plugins
|
||||
}));
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
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 start = Date.now();
|
||||
const dev = isDev();
|
||||
|
||||
if (cmd === 'build') {
|
||||
build({ dest, dev, entry, src })
|
||||
@@ -14,9 +17,7 @@ if (cmd === 'build') {
|
||||
console.error(err ? err.details || err.stack || err.message || err : 'Unknown error');
|
||||
});
|
||||
} else if (cmd === 'export') {
|
||||
const start = Date.now();
|
||||
|
||||
build({ dest, dev, entry, src })
|
||||
build({ dest, dev: false, entry, src })
|
||||
.then(() => exporter({ src, dest }))
|
||||
.then(() => {
|
||||
const elapsed = Date.now() - start;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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 src = path.resolve(process.env.SAPPER_ROUTES || 'routes');
|
||||
@@ -9,4 +9,4 @@ export const dest = path.resolve(process.env.SAPPER_DEST || '.sapper');
|
||||
export const entry = {
|
||||
client: path.resolve(templates, '.main.rendered.js'),
|
||||
server: path.resolve(dest, 'server-entry.js')
|
||||
};
|
||||
};
|
||||
|
||||
@@ -63,7 +63,8 @@ export default function exporter({ src, dest }) { // TODO dest is a terrible nam
|
||||
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 seen = new Set();
|
||||
@@ -77,19 +78,21 @@ export default function exporter({ src, dest }) { // TODO dest is a terrible nam
|
||||
return fetch(url.href)
|
||||
.then(r => {
|
||||
save(r);
|
||||
return r.text();
|
||||
})
|
||||
.then(body => {
|
||||
const $ = cheerio.load(body);
|
||||
const hrefs = [];
|
||||
|
||||
$('a[href]').each((i, $a) => {
|
||||
hrefs.push($a.attribs.href);
|
||||
});
|
||||
if (r.headers.get('Content-Type') === 'text/html') {
|
||||
return r.text().then(body => {
|
||||
const $ = cheerio.load(body);
|
||||
const hrefs = [];
|
||||
|
||||
return hrefs.reduce((promise, href) => {
|
||||
return promise.then(() => handle(new URL(href, url.href)));
|
||||
}, Promise.resolve());
|
||||
$('a[href]').each((i, $a) => {
|
||||
hrefs.push($a.attribs.href);
|
||||
});
|
||||
|
||||
return hrefs.reduce((promise, href) => {
|
||||
return promise.then(() => handle(new URL(href, url.href)));
|
||||
}, Promise.resolve());
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(`Error rendering ${url.pathname}: ${err.message}`);
|
||||
|
||||
@@ -5,8 +5,10 @@ import rimraf from 'rimraf';
|
||||
import serialize from 'serialize-javascript';
|
||||
import escape_html from 'escape-html';
|
||||
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 { dest, dev, entry, src } from '../config';
|
||||
|
||||
const dev = isDev();
|
||||
|
||||
function connect_dev() {
|
||||
mkdirp.sync(dest);
|
||||
@@ -122,7 +124,9 @@ function connect_prod() {
|
||||
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) {
|
||||
req.pathname = req.url.replace(/\?.*/, '');
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { dest, dev, entry } from '../config';
|
||||
import { dest, isDev, entry } from '../config';
|
||||
|
||||
export default {
|
||||
dev,
|
||||
dev: isDev(),
|
||||
|
||||
client: {
|
||||
entry: () => {
|
||||
|
||||
Reference in New Issue
Block a user