【发布时间】:2016-09-27 01:13:01
【问题描述】:
我想为我的 JavaScript 项目创建一个干净的架构。该项目由一个 Node.js 服务器和两个具有不同用途的独立 Angular.js 前端组成。为了构建前端,我每个都使用自定义的 grunt 构建。构建结果为每个项目一个 HTML 文件和两个缩小/丑化的 CSS 和 JavaScript 文件。然后,每个前端都在单独的最小版本的 Node 服务器上运行(仅提供静态文件)。
到目前为止,很清楚。现在的目标是为三个核心项目中的每一个添加插件模块成为可能。模块应该扩展任一项目的 JavaScript。这意味着例如在一个前端的情况下,将一个额外的角度模块添加到角度配置中。我已经知道在哪里以及如何将角度模块代码添加到核心应用程序中。
现在的问题是:如何在多个项目上创建一个合理的构建过程,这也取决于插件模块?我想出了两个解决方案。
- 我可以将插件作为 NPM 依赖项添加到其中一个核心项目中。然而,这有一个缺点,模块中的每个更改都需要推送到 NPM,这样开发插件模块不是很方便。插件不能单独运行。
- 我可以在其中一个核心项目的 Gruntfile 中有一个插件列表。此列表将包含模块的本地文件路径。在核心模块的构建中,插件的构建将被执行。然而,这将包括观察插件构建文件的变化。这是一个不干净的解决方案。
- 我可以有另一个项目,其中包含对核心项目和所有插件的依赖关系,并将它们一起构建。如何添加依赖的问题依然存在(案例1或2)
你会如何解决这个问题?
【问题讨论】:
-
可能想研究一下使用 webpack 而不是 grunt。
-
@charlietfl 你能解释一下如何在多个项目中使用 webpack 实现架构和良好的开发环境吗?
-
恐怕我真的不精通使用它,因为它不适合我所做的大部分工作。我只通过它,因为我相信它会有所帮助,因为它是从节点模块中提取的
-
对于解决方案 #1,我在开发通过 composer 提取的模块时遇到了类似的问题。我的解决方案是为了开发,我对这些模块进行符号链接。所以我有实时更新的依赖关系,但它们的位置就像是通过包管理器拉出来的一样。
-
@charlietfl grunt 比 webpack 有什么好处?
标签: javascript build architecture gruntjs multi-project