From 433c1ffbce323ce74a8ea381ff0922e3814d0257 Mon Sep 17 00:00:00 2001 From: jaulz Date: Sun, 6 Mar 2016 18:06:16 +0100 Subject: [PATCH 1/3] Template causes React Native packager to break It seems that the React Native packager has problems with the following string: `import ${v} from '${p}';` I already reported this in the React Native repository: https://github.com/facebook/react-native/issues/6323 --- src/reactTemplates.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/reactTemplates.js b/src/reactTemplates.js index 894b64ee..8eb61c59 100644 --- a/src/reactTemplates.js +++ b/src/reactTemplates.js @@ -566,9 +566,9 @@ function convertRT(html, reportContext, options) { .join(','); var buildImport; if (options.modules === 'typescript') { - buildImport = (v, p) => `import ${v} = require('${p}');`; + buildImport = (v, p) => `import ${v}` + ` = require('${p}');`; } else if (options.modules === 'es6') { // eslint-disable-line - buildImport = (v, p) => `import ${v} from '${p}';`; + buildImport = (v, p) => `import ${v}` + ` from '${p}';`; } else { buildImport = (v, p) => `var ${v} = require('${p}');`; } From 337fa63c2eab2d725d9665d9eb2e1158c7542542 Mon Sep 17 00:00:00 2001 From: jaulz Date: Mon, 7 Mar 2016 06:08:15 +0100 Subject: [PATCH 2/3] Avoid React Native's RegEx of import discovery --- src/reactTemplates.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/reactTemplates.js b/src/reactTemplates.js index 8eb61c59..e5217b9d 100644 --- a/src/reactTemplates.js +++ b/src/reactTemplates.js @@ -565,12 +565,13 @@ function convertRT(html, reportContext, options) { .map(def => `"${def}"`) .join(','); var buildImport; + var importString = 'import' if (options.modules === 'typescript') { - buildImport = (v, p) => `import ${v}` + ` = require('${p}');`; + buildImport = (v, p) => `${importString} ${v} = require('${p}');`; } else if (options.modules === 'es6') { // eslint-disable-line - buildImport = (v, p) => `import ${v}` + ` from '${p}';`; + buildImport = (v, p) => `${importString} ${v} from '${p}';` } else { - buildImport = (v, p) => `var ${v} = require('${p}');`; + buildImport = (v, p) => `var ${v} = require('${p}');` } const header = options.flow ? '/* @flow */\n' : ''; const vars = header + _(context.defines).map(buildImport).join('\n'); From 4067bba74291d02818362300f54d52b593b427ec Mon Sep 17 00:00:00 2001 From: jaulz Date: Mon, 7 Mar 2016 18:41:22 +0100 Subject: [PATCH 3/3] Avoid React Native's RegEx of require --- src/reactTemplates.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/reactTemplates.js b/src/reactTemplates.js index e5217b9d..d7cad738 100644 --- a/src/reactTemplates.js +++ b/src/reactTemplates.js @@ -566,12 +566,13 @@ function convertRT(html, reportContext, options) { .join(','); var buildImport; var importString = 'import' + var requireString = 'require'; if (options.modules === 'typescript') { - buildImport = (v, p) => `${importString} ${v} = require('${p}');`; + buildImport = (v, p) => `${importString} ${v} = ${requireString}('${p}');`; } else if (options.modules === 'es6') { // eslint-disable-line buildImport = (v, p) => `${importString} ${v} from '${p}';` } else { - buildImport = (v, p) => `var ${v} = require('${p}');` + buildImport = (v, p) => `var ${v} = ${requireString}('${p}');` } const header = options.flow ? '/* @flow */\n' : ''; const vars = header + _(context.defines).map(buildImport).join('\n');