【问题标题】:browserify package: how to expose library inside window object?browserify 包:如何在窗口对象中公开库?
【发布时间】:2016-01-29 10:47:35
【问题描述】:

我正在尝试将我的库捆绑到可以从脚本标记加载的.js 文件中。我想让我的库在浏览器控制台中的一个变量下可用(换句话说,我想将它导出到window 对象中)。我如何在browserify中做到这一点?

这是我现有的 grunt-browserify 配置:

browserify: {
  options: {
    watch: "on",
    banner: "<%= banner %>",
    browserifyOptions: {
      insertGlobalVars: "on",
      noBuiltins: true,
      detectGlobals: false
    }
  },
  dist: {
    files: {
      'dist/json-schema-faker.js': ['lib/index.js']
    }
  }

目前我无法使用外部包中的捆绑库。

我知道browserify支持External requires,但不是

var jsf = require('json-schema-faker');
jsf.doSomething();

我更愿意这样做:

jsf.doSomething();

直接(以便将jsf 分配给window 将是自动的)。怎么做,browserify在这件事上有什么可能性?

【问题讨论】:

    标签: javascript node.js bundle browserify bundling-and-minification


    【解决方案1】:

    在浏览器化代码中,您可以访问普通的 window 变量,并且它也被别名为 global 以与 Node.js 兼容。因此,您可以将其添加到代码的末尾:

    global.jsf = jsf;
    

    如果您不想让 json-schema-faker 始终导出自身,请将其包装在另一个模块中,该模块重新导出 jsf 并将其附加到 global

    【讨论】:

    • 我不想包含将我的库附加到global 的代码,因为它也会影响 node.js 环境。实际上,它只会影响图书馆本身。到目前为止,我认为standalone 选项是一个更好的解决方案。
    猜你喜欢
    • 2020-06-22
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多