expose main.js

This commit is contained in:
Rich Harris
2017-12-16 15:40:22 -05:00
parent dd1f2d79ff
commit bd7f6e2b1a
4 changed files with 20 additions and 23 deletions

View File

@@ -9,4 +9,6 @@ exports.src = path.resolve(process.env.SAPPER_ROUTES || 'routes');
exports.dest = path.resolve( exports.dest = path.resolve(
process.env.NOW ? '/tmp' : process.env.NOW ? '/tmp' :
process.env.SAPPER_DEST || '.sapper' process.env.SAPPER_DEST || '.sapper'
); );
exports.main_built = path.resolve('templates/.main.tmp.js');

View File

@@ -1,26 +1,26 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const { main_built } = require('../config.js');
const template = fs.readFileSync(path.resolve(__dirname, '../../templates/main.js'), 'utf-8'); const template = fs.readFileSync('templates/main.js', 'utf-8');
module.exports = function create_app(src, dest, routes, options) { module.exports = function create_app(src, dest, routes, options) {
// TODO in dev mode, watch files // TODO in dev mode, watch files
const code = routes const code = `[${
.filter(route => route.type === 'page') routes
.map(route => { .filter(route => route.type === 'page')
const params = route.dynamic.length === 0 ? .map(route => {
'{}' : const params = route.dynamic.length === 0 ?
`{ ${route.dynamic.map((part, i) => `${part}: match[${i + 1}]`).join(', ') } }`; '{}' :
`{ ${route.dynamic.map((part, i) => `${part}: match[${i + 1}]`).join(', ') } }`;
return `{ pattern: ${route.pattern}, params: match => (${params}), load: () => import(/* webpackChunkName: "${route.id}" */ '${src}/${route.file}') }` return `{ pattern: ${route.pattern}, params: match => (${params}), load: () => import(/* webpackChunkName: "${route.id}" */ '${src}/${route.file}') }`
}) })
.join(',\n\t'); .join(', ')
}]`;
const main = template const main = template.replace('__routes__', code);
.replace('__app__', path.resolve(__dirname, '../../runtime/app.js'))
.replace('__selector__', options.selector || 'main')
.replace('__routes__', code);
fs.writeFileSync(path.join(dest, 'main.js'), main); fs.writeFileSync(main_built, main);
}; };

View File

@@ -1,5 +0,0 @@
import app from '__app__';
app.init(document.querySelector('__selector__'), [
__routes__
]);

View File

@@ -1,6 +1,6 @@
const path = require('path'); const path = require('path');
const route_manager = require('../lib/route_manager.js'); const route_manager = require('../lib/route_manager.js');
const { src, dest, dev } = require('../lib/config.js'); const { src, dest, dev, main_built } = require('../lib/config.js');
module.exports = { module.exports = {
dev, dev,
@@ -8,7 +8,7 @@ module.exports = {
client: { client: {
entry: () => { entry: () => {
return { return {
main: `${dest}/main.js` main: main_built
}; };
}, },