diff --git a/mocha.opts b/mocha.opts index 427b029758..af6b17a845 100644 --- a/mocha.opts +++ b/mocha.opts @@ -1 +1,2 @@ +--bail test/test.js \ No newline at end of file diff --git a/package.json b/package.json index cb1acbe5a9..fc6b42685b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "build": "node src/shared/_build.js && rollup -c", "dev": "node src/shared/_build.js && rollup -c -w", "pretest": "npm run build", - "prepublish": "npm run build && npm run lint", + "prepublishOnly": "npm run build && npm run lint", "prettier": "prettier --use-tabs --single-quote --trailing-comma es5 --write \"src/**/*.ts\"" }, "repository": { @@ -70,7 +70,6 @@ "node-resolve": "^1.3.3", "nyc": "^11.1.0", "prettier": "^1.4.1", - "reify": "^0.4.4", "rollup": "^0.45.2", "rollup-plugin-buble": "^0.15.0", "rollup-plugin-commonjs": "^8.0.2", diff --git a/src/generators/dom/index.ts b/src/generators/dom/index.ts index 073471e5b0..67a6515239 100644 --- a/src/generators/dom/index.ts +++ b/src/generators/dom/index.ts @@ -293,21 +293,32 @@ export default function dom( }); if (sharedPath) { - if (format !== 'es') { - throw new Error( - `Components with shared helpers must be compiled to ES2015 modules (format: 'es')` - ); + const used = Array.from(usedHelpers).sort(); + if (format === 'es') { + const names = used.map(name => { + const alias = generator.alias(name); + return name !== alias ? `${name} as ${alias}` : name; + }); + + result = + `import { ${names.join(', ')} } from ${stringify(sharedPath)};\n\n` + + result; } - const names = Array.from(usedHelpers).sort().map(name => { - return name !== generator.alias(name) - ? `${name} as ${generator.alias(name)}` - : name; - }); + else if (format === 'cjs') { + const SHARED = '__shared'; + let requires = `var ${SHARED} = require( ${stringify(sharedPath)} );`; + used.forEach(name => { + const alias = generator.alias(name); + requires += `\nvar ${alias} = ${SHARED}.${name};`; + }); - result = - `import { ${names.join(', ')} } from ${stringify(sharedPath)};\n\n` + - result; + result = `${requires}\n\n${result}`; + } + + else { + throw new Error(`Components with shared helpers must be compiled with \`format: 'es'\` or \`format: 'cjs'\``); + } } else { usedHelpers.forEach(key => { const str = shared[key]; diff --git a/test/helpers.js b/test/helpers.js index 3e42033ad9..2a8e7a6016 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -147,7 +147,7 @@ export function loadConfig(file) { try { const resolved = require.resolve(file); delete require.cache[resolved]; - return require(resolved).default; + return require(resolved); } catch (err) { if (err.code === 'MODULE_NOT_FOUND') { return {}; diff --git a/test/hydration/index.js b/test/hydration/index.js index fc4df0f2da..502f10114e 100644 --- a/test/hydration/index.js +++ b/test/hydration/index.js @@ -27,7 +27,7 @@ describe('hydration', () => { require.extensions['.html'] = function(module, filename) { const options = Object.assign( - { filename, name: getName(filename), hydratable: true }, + { filename, name: getName(filename), hydratable: true, format: 'cjs' }, compileOptions ); let { code } = svelte.compile(fs.readFileSync(filename, 'utf-8'), options); @@ -65,7 +65,7 @@ describe('hydration', () => { let SvelteComponent; try { - SvelteComponent = require(`${cwd}/main.html`).default; + SvelteComponent = require(`${cwd}/main.html`); } catch (err) { throw err; } diff --git a/test/runtime/index.js b/test/runtime/index.js index 188829f328..d657124ea9 100644 --- a/test/runtime/index.js +++ b/test/runtime/index.js @@ -34,7 +34,7 @@ describe("runtime", () => { require.extensions[".html"] = function(module, filename) { const options = Object.assign( - { filename, name: getName(filename) }, + { filename, name: getName(filename), format: 'cjs' }, compileOptions ); let { code } = svelte.compile(fs.readFileSync(filename, "utf-8"), options); @@ -132,7 +132,7 @@ describe("runtime", () => { global.window = window; try { - SvelteComponent = require(`./samples/${dir}/main.html`).default; + SvelteComponent = require(`./samples/${dir}/main.html`); } catch (err) { showOutput(cwd, { shared }); // eslint-disable-line no-console throw err; diff --git a/test/runtime/samples/deconflict-builtins/get.js b/test/runtime/samples/deconflict-builtins/get.js index 865e2b1c43..cd846d9be9 100644 --- a/test/runtime/samples/deconflict-builtins/get.js +++ b/test/runtime/samples/deconflict-builtins/get.js @@ -1,3 +1,3 @@ -export default function get () { +export function get () { return 'got'; } \ No newline at end of file diff --git a/test/runtime/samples/deconflict-builtins/main.html b/test/runtime/samples/deconflict-builtins/main.html index eb9de7d15f..db26b1ed70 100644 --- a/test/runtime/samples/deconflict-builtins/main.html +++ b/test/runtime/samples/deconflict-builtins/main.html @@ -1,7 +1,7 @@ {{foo}}