使用 browserify 将内部库依赖项导出到外部范围
Exporting internal library dependency to outer scope with browserify
我正在使用 browserify 来要求 bluebird 在我的 WebApi Wrapper for Dynamics CRM 中使用 promises 以实现跨浏览器的兼容使用。
到目前为止它工作得很好,但是我不喜欢我不能在 IE 中返回调用结果时执行 Promise.all
,而不在我的首页中再次包含 bluebird。
出于这个原因,我希望我的 browserify 包将 Promise 暴露给全球范围。当然只做 global.Promise = require("bluebird")
也行,但感觉有点脏。
使用我制作的独立包,我的独立包也将我的客户端公开为 属性 和 Promise。但是,这样名称会变长,我希望能够在任何地方使用 Promise(没有我的独立包装器)。
你怎么看?这可能还是我不应该那样做?
我现在所做的是将我的客户端定义为 IIFE,并在其中执行以下操作:
module.exports = {
Client: WebApiClient,
Promise: Promise
};
和 browserify src/js/WebApiClient.js -d --standalone XrmWebApi -o Publish/WebApiClient.js
一样的浏览器。
这样我目前可以使用 XrmWebApi.Client 和 XrmWebApi.Promise,但我非常想摆脱 XrmWebApi 来调用承诺。
感谢您的帮助。
亲切的问候,
弗洛里安
为您的全局定义创建一个新文件,然后将其作为入口点添加到您的捆绑步骤中。
src/js/globals.js
:
var bluebirdPromise = require("bluebird");
global.Promise = global.Promise || bluebirdPromise;
browserify src/js/globals.js src/js/WebApiClient.js -d -o Publish/WebApiClient.js
您可能希望在文件 src/js/WebApiClient.js
及其依赖项中删除对 bluebird
的引用,而只使用 Promise
.
我正在使用 browserify 来要求 bluebird 在我的 WebApi Wrapper for Dynamics CRM 中使用 promises 以实现跨浏览器的兼容使用。
到目前为止它工作得很好,但是我不喜欢我不能在 IE 中返回调用结果时执行 Promise.all
,而不在我的首页中再次包含 bluebird。
出于这个原因,我希望我的 browserify 包将 Promise 暴露给全球范围。当然只做 global.Promise = require("bluebird")
也行,但感觉有点脏。
使用我制作的独立包,我的独立包也将我的客户端公开为 属性 和 Promise。但是,这样名称会变长,我希望能够在任何地方使用 Promise(没有我的独立包装器)。
你怎么看?这可能还是我不应该那样做?
我现在所做的是将我的客户端定义为 IIFE,并在其中执行以下操作:
module.exports = {
Client: WebApiClient,
Promise: Promise
};
和 browserify src/js/WebApiClient.js -d --standalone XrmWebApi -o Publish/WebApiClient.js
一样的浏览器。
这样我目前可以使用 XrmWebApi.Client 和 XrmWebApi.Promise,但我非常想摆脱 XrmWebApi 来调用承诺。
感谢您的帮助。
亲切的问候, 弗洛里安
为您的全局定义创建一个新文件,然后将其作为入口点添加到您的捆绑步骤中。
src/js/globals.js
:
var bluebirdPromise = require("bluebird");
global.Promise = global.Promise || bluebirdPromise;
browserify src/js/globals.js src/js/WebApiClient.js -d -o Publish/WebApiClient.js
您可能希望在文件 src/js/WebApiClient.js
及其依赖项中删除对 bluebird
的引用,而只使用 Promise
.