问题标签 [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.
browserify - Browserify - 如何包含非公开购买的第三方脚本
我是 browserify 的新手,它的用法对我来说并不完全清楚,尽管它的好处似乎很引人注目。
我有几个问题,希望有人能澄清一下。
我看过关于在 package.json 中使用 browserify-shim 来包含第三方库(如 jquery 和 bootstrap)的博客文章。我还看到使用 gulp 之类的工具生成捆绑文件的帖子。如果像 gulp 这样的工具能够自动化这个过程,我似乎无法找到一个很好的答案来解释为什么需要 browserify-shim。有人可以阐明一下吗?为什么甚至需要 browserify-shim?我觉得 gulp 解决方案更干净一些,尽管涉及更多一点。它不会污染 package.json 与 browserify 特定的东西,这是一个构建的东西,因此与 gulp 一起使用(只是我个人的意见)
如何处理不在 npm 中也不公开的第三方库?例如,我们从第三方购买脚本。该脚本不是任何常见的 js,而是具有一些依赖项的常规 js 文件(例如,在 jquery 和下划线上)。
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"); })
任务仍然有效。
browserify - Browserify 复制库代码
我想将所有供应商库(如 jQuery、moment.js、bootstrap.js 等)代码放入vendor.js文件并从中导出 jQuery 以在其他模块中重用它。
由于 bootstrap 依赖于 jQuery,我对这两个模块进行了调整并配置了依赖项:
包.json
垫片配置.js
重用jQuery作为外部依赖项我在require
方法调用中指定它,当构建我的vendor.js
在构建vendor.js之后,我发现jQuery代码被包含到vendor.js 中两次:一次是解决依赖关系,另一次是导出库。考虑到jQuery的大小,这是一个重要的问题。
谁能帮我解决它?
jquery - 为生产编译 browserify
我正在尝试编译由APP.JS
browserifyAPP.JS
处理的产品。
APP.JS
编译前
编译后的版本仍然像上面一样显示路径,但文件的内容也包括在内。如何在生产中清理这些路径?它揭示了我的很多后端架构,我想隐藏它。
javascript - 有没有办法在 Node 中使用非 CommonJS 模块?
假设有人没有在 npm 中发布他们的模块,即使他们这样做了,我们也可以说他们没有将它作为 commonjs 模块。是否有办法在节点内仍然使用该插件或模块?我知道我们可以使用 browserify 在浏览器中使用节点代码,但我只是想知道是否有另一种方法。
这个问题似乎是我正在调查的最接近的问题,但还没有回复。
我的最终目标是能够在 node 中使用不是专门为 CJS 模块的库,并且仍然能够在 node/cli 中测试我的代码。
browserify-shim - browserify-shim jquery-validate 找不到模块
我正在尝试使用 browserify 来管理 javascript,但是在 browserify-shim 步骤中我被阻止了。
我的文件结构是:
- 建造:
- 包.json
- gulpfaile.js
- 资产源代码
- bower_components
- jQuery-验证
- 距离
- jquery-validate.js
- 距离
- jQuery-验证
- bower_components
在 package.json 我有以下内容:
在一个模块中,我有:
我一定是做错了什么,因为每当我使用 gulp 构建时,我都会收到一条消息说找不到模块“验证器”......
jquery-validate 将自身附加到 jQuery 和 window 对象上的 $。我已经尝试了很多不同的变体,但这似乎是查看文档最正确的方法......我真的不知道还能尝试什么,所以任何朝着正确方向的迹象都会非常感激!
一切顺利,焦亚
javascript - 如何浏览具有全局变量的 JS 文件?
在browserify-shim的页面上,他们明确尝试帮助解决我的用例:
仅在脚本级别声明 var foo = ... 并假设它附加到窗口对象的模块。因为它们唯一的运行方式是在全球范围内——“咳咳,……不?!”
我在让它工作时遇到问题。我有一个带有 browserify 和 browserify 的测试项目,我正在尝试使用以下文件作为 browserify 模块:
请注意,我们在丑陋的.js 文件中使用了两个相互依赖的函数和 jquery!
丑陋的.js:
我想在main.js 中使用它:
我试图在我的 package.json 中添加以下内容,但无济于事,找不到“丑陋”模块......
包.json:
bower - 玩笑测试中的 Jest 和 Bower 模块加载
假设我有一个使用 bower、grunt、bowerify(使用 shim)的项目,因为我非常喜欢 Jest,所以我想用它来测试。当我运行测试时,我怎么会开玩笑地看到我的 browserify shim 模块。我使用 grunt 来启动 npm test 命令。这是我的 package.json 文件。
现在,在运行测试之前,我几乎可以通过在我的 grunt 文件中执行此操作来解决此问题。
和。
问题是使用browserify,所以将浏览器的所有内容与我的设置结合起来效果很好,我可以像这样要求我的垫片模块。
require('jquery') //example
但是在开玩笑的cli中,测试失败了,因为他们可以找到模块,除非我以某种方式在它前面加上./,就像这样require('./jquery')
javascript - 对于非 SPA 用途,应如何处理项目级捆绑?
我正在学习 browserify,我正在尝试用它做两件基本的事情:
- 转换(通过 shim)非 CommonJS 模块以实现易用性和依赖性跟踪
- 捆绑特定于项目的库
我找到了一个工作流程来完成所有这些工作并使用 Gulp 将其自动化。这可以工作并产生正确的输出,但是我很好奇它是否可以变得更简单。似乎我必须在基于项目的捆绑包上复制很多配置。这是工作示例:
添加了package.json
无效注释以进行澄清
config.js
包含所有与 task-runner 相关的配置设置
shared-bundle.js
充当捆绑文件,其中节点加载依赖项,此时已应用 shim
browserify-task.js
包含 browserify 捆绑 gulp 任务
在config.js
第一bundleConfig
项entries
是包含模块的文件的源的地方require()
,我想用 package.jsonbrowser
键中定义的模块的模块名称替换那些。
在中config.js
,如果我将捆绑配置更改为:
并运行 gulp 任务,它将包含 bootstrap.js 但它不运行 shim 转换。jQuery 根本不包括在内。
这给我留下了几个问题:
- 有没有更好的方法来捆绑我的 js 以在非 SPA 应用程序中使用(即我是否以错误的方式处理这个问题)?
- 如果没有,有没有办法确保在捆绑之前运行 shim 转换,以便我可以将捆绑配置放在一个地方?
javascript - 在 Browserify 中制作 jQuery、Backbone 等全局变量
我有一个使用 Backbone 和 Marionette 构建的相对较大的应用程序。这意味着在每个文件的顶部我都有类似的内容:
我知道 Browserify 的部分想法是没有全局变量,但这似乎是很多不必要的样板文件。我想要的是让 jQuery、Backbone、Underscore 和 Marionette 像往常一样加载全局变量,并假设它们在任何地方都可用。有没有办法在browserify中做到这一点?