编译RequireJS以删除AMD依赖项

Jef*_*rey 8 javascript optimization amd concatenation requirejs

我正在使用RequireJS来管理开发中的依赖项,但在生产时我想删除AMD加载器上的所有依赖项.似乎RequireJS优化器创建了一个仍在运行时使用AMD负载的文件 - 我只是希望有一个静态(非AMD依赖,但仍然兼容AMD)文件,例如jquery生成的文件(来自查看jquery)来源,看起来他们在他们的grunt文件中手动命令他们的依赖项).这可能吗?

我也愿意使用RequireJS以外的其他库.

注意:这类似于我的其他问题Javascript requirejs在开发中但在生产中编译,但在这种情况下我想要一起删除AMD.

Oli*_*cal 3

如果您想让脚本可通过<script>标签或 AMD 加载,那么您可能需要根据我的 EventEmitter 类公开其 self 的方式来使用某些内容。

// Expose the class either via AMD, CommonJS or the global object
if (typeof define === 'function' && define.amd) {
    define(function () {
        return EventEmitter;
    });
}
else if (typeof module !== 'undefined' && module.exports){
    module.exports = EventEmitter;
}
else {
    this.EventEmitter = EventEmitter;
}
Run Code Online (Sandbox Code Playgroud)

这通过 AMD、CommonJS(节点)和全局对象(即 )公开对象window。这有一个主要警告,它适用于只想通过 AMD 公开其类的单文件脚本。

如果您有很多模块,那么您可能需要首先使用r.js编译脚本,使用Almond填充 AMD ,然后使用类似上面的内容以上述多种方式公开它。