Browserify bundle.js демистифицирован

Поэтому, когда мы просматриваем модули, он выплевывает эту загадочную функцию:

(function e(t,n,r){
function s(o,u){
    if(!n[o]){
        if(!t[o]){
            var a=typeof require=="function"&&require;
            if(!u&&a)return a(o,!0);
            if(i)return i(o,!0);
            var f=new Error("Cannot find module '"+o+"'");
            throw f.code="MODULE_NOT_FOUND",f
        }
        var l=n[o]={exports:{}};
        t[o][0].call(l.exports,function(e){
             var n=t[o][1][e];
             return s(n?n:e)
        },l,l.exports,e,t,n,r)
    }
        return n[o].exports
}
var i=typeof require=="function"&&require;
for(var o=0;o<r.length;o++)s(r[o]);
return s
})({
1:[function(require,module,exports){....

Теперь я искал источник, объяснение или источник с читаемыми переменными, но не смог его найти.

Например:

 var a=typeof require=="function"&&require;

Кажется, что здесь require() функция создана, как это определяет?

Это в основном тот факт, что эти переменные не читаются, я ошибаюсь, чтобы предположить следующее?

(function e(require,module,exports){
function s(o,u){
    if(!module[o]){
        if(!require[o]){
            var a=typeof require=="function"&&require;
            if(!u&&a)return a(o,!0);
            if(i)return i(o,!0);
            var f=new Error("Cannot find module '"+o+"'");
            throw f.code="MODULE_NOT_FOUND",f
        }
        var l=module[o]={exports:{}};
        require[o][0].call(l.exports,function(e){
            var module = require[o][1][e];
            return s(module ? module : e)
        },l , l.exports, e, require, module, exports)
    }
        return module[o].exports
}
var i=typeof require=="function"&&require;
for(var o=0; o<exports.length; o++) s(exports[o]);
return s
})({
1:[function(require,module,exports){...

Но это все еще оставляет s(o,u), который принимает 2 аргумента, но единственный раз, когда он вызывается, получает только 1 аргумент..

},l , l.exports, e, require, module, exports)

Куда это относится?

Кто-нибудь может помочь заполнить пробелы?

1 ответ

Решение

Хватит искать, вот комментируемый исходный файл;)

https://github.com/substack/browser-pack/blob/master/prelude.js

Другие вопросы по тегам