From 4a79c2849ecf78bea89c3e4f7a3e0ff47b11b178 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Tue, 26 Dec 2017 15:21:12 +0100 Subject: [PATCH 1/3] style: autofix lint --- config.js | 2 +- server/serve-package.js | 2 +- server/utils/guid.js | 6 +++--- test/test.js | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config.js b/config.js index 48d6169..cbe915e 100644 --- a/config.js +++ b/config.js @@ -22,7 +22,7 @@ exports.additionalBundleResHeaders = { }; if (process.env.AWS) { - const cacheExpiration = 60 * 60 * 24 * 365 + const cacheExpiration = 60 * 60 * 24 * 365; exports.npmInstallEnvVars = ["npm_config_cache=~/.npm"]; exports.debugEndpoints = false; exports.additionalBundleResHeaders = { diff --git a/server/serve-package.js b/server/serve-package.js index b905ef6..5f42a74 100644 --- a/server/serve-package.js +++ b/server/serve-package.js @@ -85,7 +85,7 @@ module.exports = function servePackage ( req, res, next ) { }, additionalBundleResHeaders)); // FIXME(sven): calculate the etag based on the original content - res.setHeader('ETag', etag(zipped)) + res.setHeader('ETag', etag(zipped)); res.end( zipped ); }); }) diff --git a/server/utils/guid.js b/server/utils/guid.js index a5fb4e6..7e89ac3 100644 --- a/server/utils/guid.js +++ b/server/utils/guid.js @@ -1,6 +1,6 @@ module.exports = function guid () { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); -} \ No newline at end of file +}; \ No newline at end of file diff --git a/test/test.js b/test/test.js index a6aea81..4414bad 100644 --- a/test/test.js +++ b/test/test.js @@ -7,7 +7,7 @@ const server = fork('server/index.js', ['start'], { stdio: 'inherit' }); -async function getPackage(id) { +async function getPackage (id) { const zipped = await request(`http://localhost:9000/${id}`, { encoding: null }); @@ -21,7 +21,7 @@ async function getPackage(id) { return mod.exports; } -function success(message) { +function success (message) { console.log(`\u001B[32m✓\u001B[39m ${message}`); } From ab4bfc53cf26e523fbccd080ff99b48815216f77 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Tue, 26 Dec 2017 15:42:32 +0100 Subject: [PATCH 2/3] feat: show stack trace in error --- server/child-processes/create-bundle.js | 2 +- server/serve-package.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/child-processes/create-bundle.js b/server/child-processes/create-bundle.js index 97ca64f..a580969 100644 --- a/server/child-processes/create-bundle.js +++ b/server/child-processes/create-bundle.js @@ -48,7 +48,7 @@ async function createBundle ({ hash, pkg, version, deep, query }) { process.send({ type: 'error', message: err.message, - stack: err.message + stack: err.stack }); } diff --git a/server/serve-package.js b/server/serve-package.js index 5f42a74..06754c0 100644 --- a/server/serve-package.js +++ b/server/serve-package.js @@ -90,7 +90,7 @@ module.exports = function servePackage ( req, res, next ) { }); }) .catch( err => { - logger.error( `[${qualified}] ${err.message}` ); + logger.error( `[${qualified}] ${err.message}`, err.stack ); res.status( 500 ); const page = sander.readFileSync( `${root}/server/templates/500.html`, { encoding: 'utf-8' }) .replace( '__ERROR__', err.message ); From 6ec6519508dc80109f6d7d6b3d1b908e8ed34351 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Tue, 26 Dec 2017 16:01:22 +0100 Subject: [PATCH 3/3] feat: externals wip --- server/child-processes/create-bundle.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/server/child-processes/create-bundle.js b/server/child-processes/create-bundle.js index a580969..476a0e5 100644 --- a/server/child-processes/create-bundle.js +++ b/server/child-processes/create-bundle.js @@ -130,12 +130,18 @@ function bundle ( cwd, deep, query ) { const code = sander.readFileSync( entry, { encoding: 'utf-8' }); + let external = []; + + if (typeof query.externals === 'string') { + external = query.externals.split(','); + } + if ( isModule( code ) ) { info( `[${pkg.name}] ES2015 module found, using Rollup` ); - return bundleWithRollup( cwd, pkg, entry, moduleName ); + return bundleWithRollup( cwd, pkg, entry, moduleName, external ); } else { info( `[${pkg.name}] No ES2015 module found, using Browserify` ); - return bundleWithBrowserify( pkg, entry, moduleName ); + return bundleWithBrowserify( pkg, entry, moduleName, external ); } } @@ -149,12 +155,13 @@ function findEntry ( file ) { } } -async function bundleWithRollup ( cwd, pkg, moduleEntry, moduleName ) { +async function bundleWithRollup ( cwd, pkg, moduleEntry, moduleName, external ) { const bundle = await rollup.rollup({ entry: path.resolve( cwd, moduleEntry ), plugins: [ resolve({ module: true, jsnext: true, main: false, modulesOnly: true }) - ] + ], + external, }); info( `[${pkg.name}] bundled using Rollup` ); @@ -181,9 +188,10 @@ async function bundleWithRollup ( cwd, pkg, moduleEntry, moduleName ) { } } -function bundleWithBrowserify ( pkg, main, moduleName ) { +function bundleWithBrowserify ( pkg, main, moduleName, external ) { const b = browserify( main, { - standalone: moduleName + standalone: moduleName, + external }); return new Promise( ( fulfil, reject ) => {