将 package.json 用于客户端包,可以在浏览器中动态加载
Using package.json for client side packages, that could be loaded dynamically in browser
我正在考虑扩展package.json的格式以在客户端包含动态包(插件)加载,我想了解这个想法是否与npm愿景相矛盾。换句话说,我想在浏览器运行时中加载一堆共享公共元数据的模块。像 system.js 和 jspm 这样的解决方案非常适合模块管理,但我寻求的是客户端的动态包管理。
详细地说,我想添加一个像"myapp-clientRuntimeDependencies"这样的属性,它允许指定由浏览器加载的依赖项,而不是标准的预打包(npm install->browserify-like solution)。
package.json 示例:
{
name: "myapp-package",
version: "",
myapp-clientRuntimeDependencies: {
"myapp-plugin": "file:myapp-plugin",
"myapp-anotherplugin": "file:myapp-anotherplugin"
},
peerDependencies: {
"myapp-core": "1.0.0"
}
}
问题:这个想法是否与"npm"和"package.json"的愿景相矛盾?如果是,那为什么?
非常感谢来自 npm 社区的任何反馈。
引用:扩展包.json: http://blog.npmjs.org/post/101775448305/npm-and-front-end-packaging
编辑:
这个问题没有表述得太好,更好的提问方式是:
在 package.json 中指定 2 个动态加载的前端包之间的运行时依赖关系的最标准方法是什么(例如,由一些现有工具处理,可能由 npm 支持)?
将 JSON 格式的元数据附加到动态加载的前端包的最标准方法是什么?
我不会说它与package.json的愿景相冲突,但它似乎与它通常的使用方式有些冲突。正如您似乎知道的那样,package.json 通常在运行时之前使用。为了将 package.json 中的某些内容加载到运行时中,您必须将 package.json 加载到前端代码中。如果您正在存储不希望通过简单视图源对前端可见的配置,这肯定会带来问题。
有一件事不太符合我的观点:你说系统.js和jspm对模块管理很好,但你正在寻找包管理。最后,包和模块往往是同义词,因为包变成了模块。
我可能误解了你在寻找什么,但从我能收集到的信息来看,我建议你看看代码拆分......这本质上是创建单独的JS文件,这些文件将根据需要动态加载,而不是将所有JavaScript捆绑到单个文件中。这里有一些关于如何使用 webpack 执行此操作的文档(我相信浏览器化也可以这样做)。
理解正确,您的问题是关于使用package.json
文件包含您自己的应用程序配置。在你描述的示例中,你将使用此类配置来让你的应用知道哪些依赖项可以在运行时加载。
实际上没有什么可以阻止您在package.json
文件中插入自己的字段,除了与npm
用于其他含义的名称发生冲突的风险。但是,如果您使用非常具体的名称(如您的示例所示),您应该足够安全。实际上,许多 lint 和构建工具已经这样做了。它甚至明确写在你提到的帖子中:
如果您的工具需要元数据才能使其工作,请将其放在 package.json 中。不问就这样做是不礼貌的,但我们邀请你这样做,所以继续吧。注册表是一个无模式存储,因此您添加的每个字段都与所有其他字段处于平等地位,我们不会删除或抱怨新字段(只要它们不与现有字段冲突)。
但是如果你想更安全,你可以求助于使用不同的文件(例如Bower所做的)。
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 浏览器加载损坏的旧Javascript
- 浏览器加载时自动刷新
- 如何为某些浏览器加载某些脚本
- 应用浏览器加载停止事件不起作用
- Ajax 启用浏览器加载栏
- 如何正确注销GWT应用程序以避免浏览器加载缓存数据
- PhoneGap 在应用程序浏览器加载停止事件问题
- 如何在javascript中从浏览器加载xml数据
- 您能否从 Web 浏览器加载 Socket.IO(快速)服务器
- 浏览器加载错误仅具有特定文件路径 - 内部服务器错误 500
- 如何使用javascript获取浏览器加载的文件列表
- 每当浏览器加载图标处于活动状态时显示加载图标
- JavaScript中有没有一种方法可以在解析HTML时在浏览器加载图像之前更改图像路径
- 在IE浏览器中,总是从浏览器加载旧数据
- 浏览器加载资源的最有效方式
- 浏览器加载指示器从未停止旋转IE10
- Facebook如何在AJAX页面加载过程中显示浏览器加载进度
- 用ajax在本地浏览器加载JSON,但不能在PhoneGap应用中加载