Comparing version 0.1.3 to 0.1.4
{ | ||
"name": "cjstoes", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
# CommonJS to ES6 module | ||
Change the purescript output file to ES6 modules | ||
Change the purescript output file to ES6 modules, then we can use ES6 tree shaking. | ||
@@ -23,9 +23,6 @@ # Example | ||
var b = 'b' | ||
export var FolderName_b = 'b' | ||
var c = 'c' | ||
export default { | ||
b, | ||
c, | ||
} | ||
export var FolderName_c = c | ||
``` |
@@ -44,3 +44,5 @@ const estraverse = require('estraverse') | ||
enter(node, parent) { | ||
// edit require | ||
/** | ||
* edit require | ||
*/ | ||
if ( | ||
@@ -94,2 +96,9 @@ node.type === 'VariableDeclaration' && | ||
* export var D_b = b | ||
* | ||
* 但如下情况 | ||
* var a = require('../Main'); | ||
* module.exports = { b: a.b } | ||
* 将转化为 | ||
* import {Main_b} from '../Main'; | ||
* export var D_b =Main_b; | ||
*/ | ||
@@ -110,2 +119,8 @@ if ( | ||
allExportsNamesArr.map(n => { | ||
let varName = '' | ||
if (allRequiresObj[n[1][0]]) { | ||
varName = getPathName(allRequiresObj[n[1][0]]) + '_' + n[1][1] | ||
} else { | ||
varName = n[1].join('.') | ||
} | ||
tree.body.push({ | ||
@@ -122,7 +137,3 @@ type: 'ExportNamedDeclaration', | ||
}, | ||
init: parseScript( | ||
n[1].replace(/^([^.]+)\./, (match, $1) => { | ||
return getPathName(allRequiresObj[$1]) + '_' | ||
}) | ||
).body[0].expression, | ||
init: parseScript(varName).body[0].expression, | ||
}, | ||
@@ -202,3 +213,13 @@ ], | ||
node.expression.right.properties.map(n => { | ||
r[n.key.name || n.key.value] = generate(n.value) | ||
let names = [] | ||
let obj = n.value | ||
while (obj.type === 'MemberExpression') { | ||
names.push(obj.property.value || obj.property.name) | ||
if (obj.object) { | ||
obj = obj.object | ||
} | ||
} | ||
names.push(obj.name) | ||
r[n.key.name || n.key.value] = names.reverse() | ||
}) | ||
@@ -205,0 +226,0 @@ } |
@@ -72,2 +72,9 @@ const { parseModule } = require('esprima') | ||
}) | ||
it('module.exports = {char:$foreign["char"]}', () => { | ||
const input = parseModule(`var $foreign = require('./foreign');module.exports = {c:$foreign["char"]}`), | ||
output = parseModule(`import {foreign_char} from './foreign';export var DataString_c = foreign_char`) | ||
transform(input, 'DataString') | ||
expect(input).to.deep.equal(output) | ||
}) | ||
it(`module.exports = {"indexOf'": indexOf$prime,"null": $$null}`, () => { | ||
@@ -74,0 +81,0 @@ const input = parseModule(`module.exports = {"indexOf'": indexOf$prime,"null": $$null}`), |
45185
371
28