如何在 browserify 中使用 `--node` 选项和 API

How do I use the `--node` option in browserify with the API

CLI 有高级选项 --node 捆绑以在节点内使用。

文档指出:

--node

Alias for --bare and --no-browser-field.

用于关闭浏览器字段的 API 选项很简单,但是 --bare 选项让我感到困惑。

--bare

Alias for both --no-builtins, --no-commondir, and sets --insert-global-vars
to just "__filename,__dirname". This is handy if you want to run bundles in
node.

特别是 --insert-global-vars 让我很困惑。

那么问题来了:

如何使用 browserify([files] [, opts]) api 获得与 --bare 相同的结果?

这是根据 Browserify source code:

基于 --bare 参数设置选项的代码
if (argv.bare) {
    argv.builtins = false;
    argv.commondir = false;
    if (argv.igv === undefined) {
        argv.igv = '__filename,__dirname';
    }
}

if (argv.igv) {
    var insertGlobalVars = {};
    var wantedGlobalVars = argv.igv.split(',');
    Object.keys(insertGlobals.vars).forEach(function (x) {
        if (wantedGlobalVars.indexOf(x) === -1) {
            insertGlobalVars[x] = undefined;
        }
    });
}

所以你应该将它传递给 browserify()opts 参数:

const files = [...];
const opts = {
    builtins: false,
    commondir: false,
    insertGlobalVars: ['__filename', '__dirname']
};

browserify(files, opts);