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}}