Aap*_*iso 5 git version-control node.js npm
我们的应用程序包含两个组件:API和客户端.两者都是独立的Node应用程序 虽然API并没有真正有除了文档的任何前端组件,它们都仍然有着一些共同的文件,如翡翠成分,CSS标准化,实用模块,最重要的猫鼬的MongoDB的互动模式和模型定义.我真的不想习惯我首先对API进行更改的工作流程,然后将更改的文件复制到客户端,反之亦然,因此找到一个可行的解决方案会很棒.
什么是跨Node应用程序共享杂项代码的最佳方式?
在浏览网页时,我遇到了几个解决方案,但在这种情况下,它们都没有真正起作用.
一种解决方案是让一个节点模块出共同文件,并将其保存在故宫的应用程序之间的同步,但是这意味着我(和未来可能的开发者)必须知道哪些文件是通用模块的一部分,并要求他们用require('node_modules/mongo/schemas/example.js')而不是require('mongo/schemas/example.js')例如.由于假设可能存在数百个常见文件,因此无法记住文件是否通用,特别是对于新开发人员.
另一种解决方案是制作公共模块的git子模块.这将是完美的,如果我能包括子模块路径节点的要求的路径,所以如果它没有找到预期的位置所需要的文件(比如说mongo/schemas/example.js),它看起来在常见的子模块(common/mongo/schemas/example.js).这将是非常棒的,因为它允许用"本地"版本覆盖公共文件.这有点像Magento的作品.这里的问题是Node不允许编辑需求路径(至少,据说在节点0.5之前它是可能的),所以这是一个无赖.
第三种解决方案是将公共存储库的内容粗暴地合并到应用程序的根目录中.在这个解决方案中没有真正无法解决的问题,但我觉得这是一个不好的做法.毕竟,它将无法通过应用程序编辑公共文件,因为没有办法有选择地将公共文件推送到公共git存储库.因此,基本上这个解决方案只会使工作流更加繁琐:对公共文件的所有修改都必须手动复制到公共代码库,推送到git远程,然后复制到其他应用程序.所以这个解决方案绝对不会为我削减它.
似乎第二种解决方案是我唯一的(也是最好的)选择,除非你们想出一个更好的选择(我真的希望:D).如果有人知道改变节点需求路径的方法,我将非常感激.
一种解决方案是从公共文件中创建一个节点模块,并通过 NPM 使其在应用程序之间保持同步
这是唯一一个好的解决方案。如果您有共享代码,它应该是一个模块。
但这意味着我(以及可能的未来开发人员)必须知道哪些文件是公共模块的一部分,并使用 require('node_modules/mongo/schemas/example.js') 而不是 require('mongo/schemas/ example.js') 例如
不,它require('mongo/schemas/example.js')代替了require('./mongo/schemas/example.js')。或者更好的是,require('mongo').Schemas.example尽管这需要一些工作。
您必须将代码库拆分为逻辑模块。我想你那里的那种噩梦会证明使用 NODE_PATH 是合理的,但我真的建议重构它......
| 归档时间: |
|
| 查看次数: |
2977 次 |
| 最近记录: |