如何填充依赖于全局 jQuery 和 lodash 的非 CommonJS、非 AMD 包?

2024-06-19

我是第一次使用 jspm,并且已经遇到了障碍。

我需要弄清楚如何“填充”位于我们公司私人 npm 注册表中的专有脚本。

包裹:widget

  • 驻留在私有 npm 注册表中
  • Is notCommonJS、UMD/AMD 模块
  • 依赖于取决于lodash and jquery,但假设它们存在于全局范围内
  • Exposes Widget在全球范围内

这是(假设的)代码

var Widget = {
  render: function(el, symbol) {
    symbol = _.trim(symbol);
    $(el).text(symbol);
  }
};

app.js

var widget = require("Widget");
widget.render(document.getElementById("name"), " Fred ");

索引.html

<body>
  <div id="name"></div>

  <script src="jspm_packages/system.js"></script>
  <script src="config.js"></script>
  <script>
    System.import("app");
  </script>
</body>

当我在本地 Web 服务器中运行此页面时,出现错误:

未捕获参考:_未定义

我怎样才能提供“垫片”widget?


最好的选择是,如果您可以更新 Widget 包的 package.json,您可以告诉 JSPM 它需要一个垫片:

{
  "shim": {
    "widget": { "deps": ["jquery", "lodash"] }
  }
}

(其中“widget”是包内的模块名称。)

如果由于某种原因你无法直接接触该 npm 包,那么你可以在 jspm 安装它时覆盖 shim 信息:

jspm install widget -o "{ shim: { 'widget': { deps: ['jquery', 'lodash'] } } }"

(同样,其中“widget”是模块名称,作为包本身内部的本地名称。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何填充依赖于全局 jQuery 和 lodash 的非 CommonJS、非 AMD 包? 的相关文章

随机推荐