Node.js 在通用/同构应用程序中组织package.json依赖关系
对于React和其他框架,现在通常使用npm和package.json来安装将在前端使用的库。如果您正在开发一个通用/同构应用程序,这会带来一个问题,即前端和后端的依赖项存储在同一个文件中,从而创建大量依赖项列表 如果使用npm--save/--save dev,这两种类型的依赖项(前端、后端)会混合使用,如果不逐一说明,就很难知道在何处使用哪种依赖项Node.js 在通用/同构应用程序中组织package.json依赖关系,node.js,reactjs,npm,isomorphic-javascript,Node.js,Reactjs,Npm,Isomorphic Javascript,对于React和其他框架,现在通常使用npm和package.json来安装将在前端使用的库。如果您正在开发一个通用/同构应用程序,这会带来一个问题,即前端和后端的依赖项存储在同一个文件中,从而创建大量依赖项列表 如果使用npm--save/--save dev,这两种类型的依赖项(前端、后端)会混合使用,如果不逐一说明,就很难知道在何处使用哪种依赖项 除了手工排序和管理依赖项列表外,还有什么方法可以保持列表整洁?您管理依赖项列表的策略是什么?在通用/同构应用程序中,您可能没有纯粹前端或后端的依
除了手工排序和管理依赖项列表外,还有什么方法可以保持列表整洁?您管理依赖项列表的策略是什么?在通用/同构应用程序中,您可能没有纯粹前端或后端的依赖项;大多数依赖项是共享的 我想到的一个选项是使用多个
包。json
:
- 一个用于同构依赖(react、redux等)和实用程序依赖,如构建系统(babel、webpack等)、任务运行器(gulp、cross-env)、测试(karma)等李>
- 一个用于纯前端依赖李>
- 一个用于纯后端依赖项
我自己还没有使用过这种结构,我也不确定一个
包.json
是否会更易于维护,因为您将需要管理更多的东西(如果您将npm shrinkwrap添加到其中,它的文件数量将是原来的两倍)。我非常同意sompylasar的答案,并希望进一步扩展它。我真的认为只有两个不同的package.json文件才能做到这一点
将前端和后端视为两个不同的应用程序。在两个完全不同的环境中,您的打包和构建链需求也将不同
npm的全部要点是每个包都有独立的依赖项。通过与两个完全不相关的应用程序(前端和后端)共享依赖项列表,您将遇到这种情况
想象一下,如果雇佣新的前端开发人员,他们想升级一些前端软件包,那么现在他们必须继续前进,并找出如何运行和/或测试后端,因为他们可能会破坏后端软件包
一开始管理两个package.json
文件可能会让人觉得有点麻烦,但这种隔离会让你的应用程序在成长过程中保持正常
因此,我建议使用一种结构,其中您有两个兄弟文件夹,每个文件夹都有自己的package.json。确切地说,你想如何构建它取决于你自己
如果您有希望在前端和后端之间共享的核心业务逻辑,那么当然可以将其放在单独的npm包中,然后您可以在后端和前端包中将其作为依赖项引用。
您可以使用
npm link
在前端和后端同时针对同一版本进行开发,以提高开发的舒适性。像这样的示例中有什么您不喜欢的吗?主要是关于依赖项和依赖项的组织。这些列表最终是海量的,当更新和清理未使用的依赖关系时,很难跟踪它们。考虑使用Bover用于前端依赖管理。它有自己独立于npm的结构。是的,但不适用于被质疑的同构/通用应用程序,后端(生成服务器端HTML的应用程序,而不是带有数据库或API的应用程序)重用几乎所有依赖项,因为在内部,同构/通用应用程序重用服务器端的几乎所有浏览器端模块(不仅仅是“核心业务逻辑”,而是所有视图和UI状态管理)。