问题标签 [browserify-shim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1894 浏览

browserify - Browserify - 如何包含非公开购买的第三方脚本

我是 browserify 的新手,它的用法对我来说并不完全清楚,尽管它的好处似乎很引人注目。

我有几个问题,希望有人能澄清一下。

  1. 我看过关于在 package.json 中使用 browserify-shim 来包含第三方库(如 jquery 和 bootstrap)的博客文章。我还看到使用 gulp 之类的工具生成捆绑文件的帖子。如果像 gulp 这样的工具能够自动化这个过程,我似乎无法找到一个很好的答案来解释为什么需要 browserify-shim。有人可以阐明一下吗?为什么甚至需要 browserify-shim?我觉得 gulp 解决方案更干净一些,尽管涉及更多一点。它不会污染 package.json 与 browserify 特定的东西,这是一个构建的东西,因此与 gulp 一起使用(只是我个人的意见)

  2. 如何处理不在 npm 中也不公开的第三方库?例如,我们从第三方购买脚本。该脚本不是任何常见的 js,而是具有一些依赖项的常规 js 文件(例如,在 jquery 和下划线上)。

0 投票
3 回答
5348 浏览

jquery - Browserify-shim 不解决依赖关系

我想将 bootstrap.js 和 jquery.js(都与 npm 一起安装)合并到 vendor.js 文件中,但仍然可以通过调用require('$'). 所以我创建了 gulp 任务:

然后将配置添加到package.json

最后在gulp/utilities/shim-config.js中配置我的垫片

但是在运行任务后我收到文件,引导程序在 jquery 之前,所以它抛出Uncaught Error: Bootstrap's JavaScript requires jQuery

我添加了

package.json但它没有帮助。在我看来,browserify 从不应用这种转换,因为如果我替换.transform(browserifyShim).transform(function() { throw new Error("OLOLO"); })任务仍然有效。

0 投票
0 回答
287 浏览

browserify - Browserify 复制库代码

我想将所有供应商库(如 jQuery、moment.js、bootstrap.js 等)代码放入vendor.js文件并从中导出 jQuery 以在其他模块中重用它。

由于 bootstrap 依赖于 jQuery,我对这两个模块进行了调整并配置了依赖项:

包.json

垫片配置.js

重用jQuery作为外部依赖项我在require方法调用中指定它,当构建我的vendor.js

在构建vendor.js之后,我发现jQuery代码被包含到vendor.js 中两次:一次是解决依赖关系,另一次是导出库。考虑到jQuery的大小,这是一个重要的问题。

谁能帮我解决它?

0 投票
0 回答
74 浏览

jquery - 为生产编译 browserify

我正在尝试编译由APP.JSbrowserifyAPP.JS处理的产品。

APP.JS编译前

编译后的版本仍然像上面一样显示路径,但文件的内容也包括在内。如何在生产中清理这些路径?它揭示了我的很多后端架构,我想隐藏它。

0 投票
0 回答
230 浏览

javascript - 有没有办法在 Node 中使用非 CommonJS 模块?

假设有人没有在 npm 中发布他们的模块,即使他们这样做了,我们也可以说他们没有将它作为 commonjs 模块。是否有办法在节点内仍然使用该插件或模块?我知道我们可以使用 browserify 在浏览器中使用节点代码,但我只是想知道是否有另一种方法。
这个问题似乎是我正在调查的最接近的问题,但还没有回复。

我的最终目标是能够在 node 中使用不是专门为 CJS 模块的库,并且仍然能够在 node/cli 中测试我的代码。

0 投票
0 回答
517 浏览

browserify-shim - browserify-shim jquery-validate 找不到模块

我正在尝试使用 browserify 来管理 javascript,但是在 browserify-shim 步骤中我被阻止了。

我的文件结构是:

  • 建造:
    • 包.json
    • gulpfaile.js
    • 资产源代码
      • bower_components
        • jQuery-验证
          • 距离
            • jquery-validate.js

在 package.json 我有以下内容:

在一个模块中,我有:

我一定是做错了什么,因为每当我使用 gulp 构建时,我都会收到一条消息说找不到模块“验证器”......

jquery-validate 将自身附加到 jQuery 和 window 对象上的 $。我已经尝试了很多不同的变体,但这似乎是查看文档最正确的方法......我真的不知道还能尝试什么,所以任何朝着正确方向的迹象都会非常感激!

一切顺利,焦亚

0 投票
0 回答
252 浏览

javascript - 如何浏览具有全局变量的 JS 文件?

browserify-shim的页面上,他们明确尝试帮助解决我的用例:

仅在脚本级别声明 var foo = ... 并假设它附加到窗口对象的模块。因为它们唯一的运行方式是在全球范围内——“咳咳,……不?!”

我在让它工作时遇到问题。我有一个带有 browserify 和 browserify 的测试项目,我正在尝试使用以下文件作为 browserify 模块:

请注意,我们在丑陋的.js 文件中使用了两个相互依赖的函数和 jquery!

丑陋的.js:

我想在main.js 中使用它:

我试图在我的 package.json 中添加以下内容,但无济于事,找不到“丑陋”模块......

包.json:

0 投票
2 回答
1706 浏览

bower - 玩笑测试中的 Jest 和 Bower 模块加载

假设我有一个使用 bower、grunt、bowerify(使用 shim)的项目,因为我非常喜欢 Jest,所以我想用它来测试。当我运行测试时,我怎么会开玩笑地看到我的 browserify shim 模块。我使用 grunt 来启动 npm test 命令。这是我的 package.json 文件。

现在,在运行测试之前,我几乎可以通过在我的 grunt 文件中执行此操作来解决此问题。

和。

问题是使用browserify,所以将浏览器的所有内容与我的设置结合起来效果很好,我可以像这样要求我的垫片模块。 require('jquery') //example但是在开玩笑的cli中,测试失败了,因为他们可以找到模块,除非我以某种方式在它前面加上./,就像这样require('./jquery')

0 投票
1 回答
382 浏览

javascript - 对于非 SPA 用途,应如何处理项目级捆绑?

我正在学习 browserify,我正在尝试用它做两件基本的事情:

  1. 转换(通过 shim)非 CommonJS 模块以实现易用性和依赖性跟踪
  2. 捆绑特定于项目的库

我找到了一个工作流程来完成所有这些工作并使用 Gulp 将其自动化。这可以工作并产生正确的输出,但是我很好奇它是否可以变得更简单。似乎我必须在基于项目的捆绑包上复制很多配置。这是工作示例:

添加了package.json
无效注释以进行澄清

config.js
包含所有与 task-runner 相关的配置设置

shared-bundle.js
充当捆绑文件,其中节点加载依赖项,此时已应用 shim

browserify-task.js
包含 browserify 捆绑 gulp 任务


config.js第一bundleConfigentries是包含模块的文件的源的地方require(),我想用 package.jsonbrowser键中定义的模块的模块名称替换那些。

在中config.js,如果我将捆绑配置更改为:

并运行 gulp 任务,它将包含 bootstrap.js 但它不运行 shim 转换。jQuery 根本不包括在内。

这给我留下了几个问题:

  • 有没有更好的方法来捆绑我的 js 以在非 SPA 应用程序中使用(即我是否以错误的方式处理这个问题)?
  • 如果没有,有没有办法确保在捆绑之前运行 shim 转换,以便我可以将捆绑配置放在一个地方?
0 投票
1 回答
1191 浏览

javascript - 在 Browserify 中制作 jQuery、Backbone 等全局变量

我有一个使用 Backbone 和 Marionette 构建的相对较大的应用程序。这意味着在每个文件的顶部我都有类似的内容:

我知道 Browserify 的部分想法是没有全局变量,但这似乎是很多不必要的样板文件。我想要的是让 jQuery、Backbone、Underscore 和 Marionette 像往常一样加载全局变量,并假设它们在任何地方都可用。有没有办法在browserify中做到这一点?