我有一个具有以下结构的js文件:
define("example/example", ["exports", "example/something", "example/other", "ex/sthg"], function(e, t, n, a, r) {
e["default"] = {something: 'example'}
}), define("examle/module", ["exports"], function(e) {
///
}), define("examle/module2", ["exports"], function(e) {
// and so on...
}), require("example/sthg")["default"].callSomething({
//
});
我正在寻找一种方法将此文件解压缩为原始文件,例如example/example.js
,example/module
,example/module2
等。
我已经尝试了browser-unpack
,但没有效果,所以我认为它并没有与browserify
捆绑在一起。语法类似于AMD
或RequireJS
。
还有什么可以去解压缩这样的文件吗?
答案 0 :(得分:0)
快速猴子解决方案,它足够帮助我 - 它创建带有导入列表的模块树和function(e, t, n...
作为文件内容。也许它对某人有用。在我的情况下,它可以完全拆分(当然只有js,而不是jsx),但我不想玩js解析器。
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
const defineArgs = ['e', 't', 'n', 'a', 'r']
function parseFunction(func, deps) {
let funcStr = func.toString(),
depsArr = [],
depsStr = ''
// just to know what etnar is
for(let i in deps) {
if(deps[i]!='exports') {
depsArr.push('const ' + defineArgs[i] + ' = require("' + deps[i] + '")')
}
}
depsStr = depsArr.join('\n')
return depsStr + '\n' + funcStr
}
// override define
var define = function(filename, deps, func) {
console.log(filename + ': ' + deps)
let outPath = 'src/' + filename + '.js',
outDir = path.dirname(outPath),
out = parseFunction(func, deps)
try {
fs.lstatSync(outDir)
} catch (e) {
mkdirp(outDir, function(err) { if(err){console.error(err)} })
}
fs.writeFile(outPath, out, function(err) {
if(err){console.error(err)}
})
}
// paste your script below and run this via node
// define("example/example", ["exports", "example/something", .......