包含JavaScript代码而不打包作为模块

时间:2015-12-30 09:54:09

标签: javascript webpack

如何要求未与webpack一起打包为UMD兼容模块(AMD,CommonJS)的JavaScript库?

我不希望库通过加载器。我只是希望它在需要时包含在<script>标记中,并且webpack可以管理这种依赖。

我不想简单地将它放在我的index.html中的脚本标记中,因为我想利用webpack的代码分割,并且只在必要时包含它。

我读过'外部',我不确定这与它有什么关系。文档不够清晰。

谢谢:)

更新了问题

此问题还特别针对前端库,只需通过<script>标记即可使用。

1 个答案:

答案 0 :(得分:-1)

您可以向库中添加amd支持,然后使用webpack加载它。 一些可以帮助您实现的链接是:

基本上做的是在库的顶部你可以检查它是commonjs环境还是AMD环境。因此,您可以导出您的库。

一个例子可以是这个(取自1st link

(function (root, factory) {
  if(typeof define === "function" && define.amd) {
    // Now we're wrapping the factory and assigning the return
    // value to the root (window) and returning it as well to
    // the AMD loader.
    define(["postal"], function(postal){
      return (root.myModule = factory(postal));
    });
  } else if(typeof module === "object" && module.exports) {
    // I've not encountered a need for this yet, since I haven't
    // run into a scenario where plain modules depend on CommonJS
    // *and* I happen to be loading in a CJS browser environment
    // but I'm including it for the sake of being thorough
    module.exports = (root.myModule = factory(require("postal")));
  } else {
    root.myModule = factory(root.postal);
  }
}(this, function(postal) {
  // module code here....
  return myModule;
}));