我如何使用依赖于全局jQuery& amp的非CommonJS非AMD软件包。 lodash?

时间:2015-04-08 14:11:02

标签: jspm systemjs

我第一次使用jspm并且遇到了麻烦。

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

套餐:widget

  • 驻留在私人npm注册表
  • CommonJS,UMD / AMD模块
  • 取决于lodashjquery,但假设它们存在于全球范围内
  • 在全球范围内公开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 ");

的index.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提供“垫片”?

1 个答案:

答案 0 :(得分:0)

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

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

(其中&#34;小部件&#34;是包内的模块名称。)

如果出于某种原因你不能直接触摸那个npm包,那么你可以在jspm安装时覆盖填充信息:

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

(同样,其中&#39; widget&#39;是模块名称,在包本身内部是本地的。)