Что я делаю Я преобразовываю некоторые модули ES6 node js с текущим контекстом и использую файл пакета в самом node js.
Код для преобразования
источник. js
Then("some string data", () => {
log("something from dummy step files")
});
function log(msg){
console.log(msg)
}
globalVars. js
const methods = [];
global.Then = function(msg, fn) {
console.log(msg);
methods.push(fn);
fn();
}
module.export = methods;
Скрипт
const methods = require("./globalVars");
//..
const es5Content = babelCore.transform(fs.readFileSync("source.js"), {
plugins: ["@babel/plugin-transform-modules-umd"]
});
fs.writeFileSync("bundle.js",es5Content.code);
require("./bundle.js")
console.log(methods);
Журнал над кодом
some string data
something from dummy step files
[ [Function] ]
Теперь я делаю то же самое с браузером
Script
const methods = require("./globalVars");
browserify(filePath)
.require( path.resolve( __dirname, "globalVars"))
.transform("babelify", {presets: ["@babel/preset-env"]})
.bundle()
.pipe(fs.createWriteStream("bundle.js"))
//..
require("./bundle.js")
console.log(methods);
Но он выводит только []
.
Что мне нужно
Я взял простой пример источника. Source. js будет включать и другие модули, которые babel не будет включать для преобразования. Следовательно, мне нужно использовать какой-нибудь диспетчер пакетов для объединения всех зависимостей. Но тогда я теряю текущий контекст и не знаю, как использовать файл пакета в node js.