我正在考虑扩展 package.json 的格式以包括在客户端加载动态包(插件),我想了解这个想法是否与npm 愿景与否。换句话说,我想在浏览器运行时加载一堆共享公共(public)元数据的模块。像 system.js 和 jspm 这样的解决方案非常适合模块管理,但我寻求的是客户端的动态包管理。
详细来说,我想添加一个像“myapp-clientRuntimeDependency”这样的属性,它允许指定由浏览器加载的依赖项,而不是标准的预打包(npm install->browserify-like解决方案)。
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 社区的任何反馈。
引用文献: 扩展package.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 加载到前端代码中。如果您存储的配置不希望通过简单的 View 源对前端可见,那么这肯定会带来问题。
有一件事不太让我感兴趣:你说 system.js 和 jspm 对于模块管理很有用,但你正在寻找包管理>。最后,包和模块往往是同义词,因为包变成了模块。
我可能误解了您正在寻找的内容,但从我收集到的信息来看,我建议您查看代码拆分...这本质上是创建单独的 js 文件,这些文件将根据动态加载而不是将所有 javascript 捆绑到一个文件中。 Here's some docs on how to do this with webpack (我确信 browserify 也能做到这一点)。
关于javascript - 使用 package.json 作为客户端包,可以在浏览器中动态加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842896/