diff --git a/package.json b/package.json index 617f0c0..54edf36 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "html-minifier": "^3.5.16", - "shimport": "^0.0.4", + "shimport": "^0.0.5", "source-map-support": "^0.5.6", "tslib": "^1.9.1" }, diff --git a/src/api/build.ts b/src/api/build.ts index 1f66bcf..c67071a 100644 --- a/src/api/build.ts +++ b/src/api/build.ts @@ -8,6 +8,7 @@ import { create_compilers, create_main_manifests, create_routes, create_servicew import { Compilers, Compiler } from '../core/create_compilers'; import * as events from './interfaces'; import validate_bundler from '../cli/utils/validate_bundler'; +import { copy_shimport } from './utils/copy_shimport'; export function build(opts: {}) { const emitter = new EventEmitter(); @@ -34,8 +35,9 @@ async function execute(emitter: EventEmitter, { rollup = 'rollup', routes = 'routes' } = {}) { - mkdirp.sync(dest); + mkdirp.sync(`${dest}/client`); rimraf.sync(path.join(dest, '**/*')); + copy_shimport(dest); // minify app/template.html // TODO compile this to a function? could be quicker than str.replace(...).replace(...).replace(...) @@ -66,6 +68,7 @@ async function execute(emitter: EventEmitter, { fs.writeFileSync(path.join(dest, 'build.json'), JSON.stringify({ bundler, + shimport: bundler === 'rollup' && require('shimport/package.json').version, assets: client_result.assetsByChunkName })); diff --git a/src/api/dev.ts b/src/api/dev.ts index 92b07db..1b7a719 100644 --- a/src/api/dev.ts +++ b/src/api/dev.ts @@ -12,6 +12,7 @@ import { Compiler, Compilers, CompileResult, CompileError } from '../core/create import Deferred from './utils/Deferred'; import * as events from './interfaces'; import validate_bundler from '../cli/utils/validate_bundler'; +import { copy_shimport } from './utils/copy_shimport'; export function dev(opts) { return new Watcher(opts); @@ -110,7 +111,8 @@ class Watcher extends EventEmitter { const { dest } = this.dirs; rimraf.sync(dest); - mkdirp.sync(dest); + mkdirp.sync(`${dest}/client`); + if (this.bundler === 'rollup') copy_shimport(dest); const dev_port = await ports.find(10000); @@ -271,6 +273,7 @@ class Watcher extends EventEmitter { handle_result: (result: CompileResult) => { fs.writeFileSync(path.join(dest, 'build.json'), JSON.stringify({ bundler: this.bundler, + shimport: this.bundler === 'rollup' && require('shimport/package.json').version, assets: result.assetsByChunkName }, null, ' ')); this.deferreds.client.fulfil(); diff --git a/src/api/utils/copy_shimport.ts b/src/api/utils/copy_shimport.ts new file mode 100644 index 0000000..27c247d --- /dev/null +++ b/src/api/utils/copy_shimport.ts @@ -0,0 +1,9 @@ +import * as fs from 'fs'; + +export function copy_shimport(dest: string) { + const shimport_version = require('shimport/package.json').version; + fs.writeFileSync( + `${dest}/client/shimport@${shimport_version}.js`, + fs.readFileSync(require.resolve('shimport/index.dev.js')) + ); +} \ No newline at end of file diff --git a/src/middleware.ts b/src/middleware.ts index ea28340..982e081 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -305,6 +305,7 @@ function get_page_handler( function handle_page(page: Page, req: Req, res: ServerResponse, status = 200, error: Error | string = null) { const build_info: { bundler: 'rollup' | 'webpack', + shimport: string | null, assets: Record } = get_build_info(); @@ -357,7 +358,6 @@ function get_page_handler( ); if (include_cookies) { - const cookies: Record = {}; if (!opts.headers) opts.headers = {}; const str = [] @@ -488,7 +488,7 @@ function get_page_handler( const main = `${req.baseUrl}/client/${file}`; const script = build_info.bundler === 'rollup' - ? `` + ? `` : ``; let inline_script = `__SAPPER__={${[