Web Worker - 如何在使用Bower打包时引用worker文件

9
我正在编写一个小型的JavaScript文本扩展库。该库使用Web Worker,并通过Bower打包。当通过Bower安装时,解析器脚本未被找到(我得到了404错误),因为浏览器是相对于消费站点的根目录而不是相对于从中被消耗的Bower脚本来查找(两个脚本都包含在同一个文件夹中)。这似乎是正确的行为
我的问题是:如何将Worker与Bower结合使用,以便可以加载所需的脚本,而不必硬编码bower_components/路径?
function Expander(args) {
    ...
    this.parser = 'parser.js';
    this.worker = new Worker(this.parser);
    ...
}

2
我不熟悉bower,但据我所知:您可以打开.bowerrc json文件获取directory属性的值并附加到this.parser。如果未指定目录,则需要硬编码bower_components,因为bower也将其硬编码。 - bot_insane
1
你是否使用任何工具来构建和打包你的脚本(如browserify等)?你可以让它(或grunt或gulp)将解析器文件移动到分发目录中的正确位置。你是如何在页面上包含脚本的,路径是什么? - lemieuxster
1个回答

2

我会使用Grunt。Gulp可能在起步时会更容易调试,但它缺少你需要的一个关键组件。有一组库wiredep、build-file和watch可以让你实现你想要做的事情。Wiredep监视bower目录,并自动将bower.json中依赖的js文件添加到html中,而watch可以配置为监视任何类型的文件在任何目录中进行更改。Build-file使你能够配置一个模板并传递变量,它将用这些变量动态构建一个js文件。然后,你可以使用Grunt的功能获取正确的应用程序路径并将其指向你的文件。


2
这难道不会影响最终用户而不是可分发的库吗?我会假设使用grunt的是消费应用程序,但不一定是这个库。任何澄清都将不胜感激。 - JP.
1
消费端需要运行grunt才能使其工作。话虽如此,可以自动化地从您的可分发文件中提取配置,并将它们注入到消费者的grunt文件中。 - tuckerjt07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接