Разница между преобразованием babel и преобразованием browserify - PullRequest
0 голосов
/ 26 мая 2020

Что я делаю Я преобразовываю некоторые модули 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.

...