skip webpack annotations when using Rollup

This commit is contained in:
Rich Harris
2018-08-30 18:38:46 -04:00
parent 1e22031765
commit 70fd7038b0
3 changed files with 17 additions and 10 deletions

View File

@@ -55,7 +55,7 @@ async function execute(emitter: EventEmitter, {
const route_objects = create_routes(); const route_objects = create_routes();
// create app/manifest/client.js and app/manifest/server.js // create app/manifest/client.js and app/manifest/server.js
create_main_manifests({ routes: route_objects }); create_main_manifests({ bundler, routes: route_objects });
const { client, server, serviceworker } = create_compilers(validate_bundler(bundler), { webpack, rollup }); const { client, server, serviceworker } = create_compilers(validate_bundler(bundler), { webpack, rollup });

View File

@@ -124,7 +124,7 @@ class Watcher extends EventEmitter {
try { try {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ bundler: this.bundler, routes, dev_port });
} catch (err) { } catch (err) {
this.emit('fatal', <events.FatalEvent>{ this.emit('fatal', <events.FatalEvent>{
message: err.message message: err.message
@@ -145,11 +145,11 @@ class Watcher extends EventEmitter {
}, },
() => { () => {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ bundler: this.bundler, routes, dev_port });
try { try {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ bundler: this.bundler, routes, dev_port });
} catch (err) { } catch (err) {
this.emit('error', <events.ErrorEvent>{ this.emit('error', <events.ErrorEvent>{
message: err.message message: err.message

View File

@@ -5,7 +5,8 @@ import { posixify, write_if_changed } from './utils';
import { dev, locations } from '../config'; import { dev, locations } from '../config';
import { Page, PageComponent, ServerRoute } from '../interfaces'; import { Page, PageComponent, ServerRoute } from '../interfaces';
export function create_main_manifests({ routes, dev_port }: { export function create_main_manifests({ bundler, routes, dev_port }: {
bundler: string,
routes: { components: PageComponent[], pages: Page[], server_routes: ServerRoute[] }; routes: { components: PageComponent[], pages: Page[], server_routes: ServerRoute[] };
dev_port?: number; dev_port?: number;
}) { }) {
@@ -14,7 +15,7 @@ export function create_main_manifests({ routes, dev_port }: {
const path_to_routes = path.relative(manifest_dir, locations.routes()); const path_to_routes = path.relative(manifest_dir, locations.routes());
const client_manifest = generate_client(routes, path_to_routes, dev_port); const client_manifest = generate_client(routes, path_to_routes, bundler, dev_port);
const server_manifest = generate_server(routes, path_to_routes); const server_manifest = generate_server(routes, path_to_routes);
write_if_changed( write_if_changed(
@@ -48,6 +49,7 @@ export function create_serviceworker_manifest({ routes, client_files }: {
function generate_client( function generate_client(
routes: { root: PageComponent, components: PageComponent[], pages: Page[], server_routes: ServerRoute[] }, routes: { root: PageComponent, components: PageComponent[], pages: Page[], server_routes: ServerRoute[] },
path_to_routes: string, path_to_routes: string,
bundler: string,
dev_port?: number dev_port?: number
) { ) {
const page_ids = new Set(routes.pages.map(page => const page_ids = new Set(routes.pages.map(page =>
@@ -61,10 +63,15 @@ function generate_client(
import root from '${get_file(path_to_routes, routes.root)}'; import root from '${get_file(path_to_routes, routes.root)}';
import error from '${posixify(`${path_to_routes}/_error.html`)}'; import error from '${posixify(`${path_to_routes}/_error.html`)}';
${routes.components.map(component => ${routes.components.map(component => {
`const ${component.name} = () => const annotation = bundler === 'webpack'
import(/* webpackChunkName: "${component.name}" */ '${get_file(path_to_routes, component)}');`) ? `/* webpackChunkName: "${component.name}" */ `
.join('\n')} : '';
const source = get_file(path_to_routes, component);
return `const ${component.name} = () => import(${annotation}'${source}');`;
}).join('\n')}
export const manifest = { export const manifest = {
ignore: [${server_routes_to_ignore.map(route => route.pattern).join(', ')}], ignore: [${server_routes_to_ignore.map(route => route.pattern).join(', ')}],