Gulp构build全栈应用程序的输出/path/结构策略

我创build了我自己的Mongo + Angular + Node + Node的“种子”,部分原因是我想了解更多我所省略的细节,部分原因是我想要比yo生成器提供更多的控制和结构。

我有几个问题,但所有这些问题的根源是缺乏对全堆栈(MEAN)JS应用程序的部署/维护的理解。 为简洁起见,我将其称为FS JS应用程序。

通过理解一些基本问题的答案,我可以更加自信地并以我打算的精神devise自己的种子。

FS JS应用程序在开发过程中是否与生产中的方式相同,即通过调用node

答案是肯定的,我想,但我只是想确定一下。

专业人士如何部署FS JS应用程序? 有形的部署文件是什么样的? 安装仍然通过npm install

这是我第一次遇到麻烦的地方。 我已经看到许多种子将服务器代码构build到/dist/子目录。 这让我想,要么我们应该把我们需要的所有东西捆绑在一起并压缩它,要么我们应该用npm来安装,并且从dist而不是source目录运行服务器 – 例如zip / git整个/ package.json将其复制到目标,克隆/解压缩,然后npm install在那里。

尝试转换服务器文件结构以使源文件合并为一个文件是否合意/容易/常见?

我知道,对于客户端文件,把它们捆绑在一起以节省networking开销是有意义的。 所以至less我们可能会捆绑所有的客户端文件,并使用模块来模拟文件,整个文件结构可能只是app.js 即使是依赖关系也可以合并成一个文件,而且通常是一个Gulp任务。

但对于服务器,这是我应该尝试做的事吗? 如果是这样,任何提示?

缩小和/或uglify服务器文件是否是最佳做法?

同上

对于服务器源代码转换的操作顺序是什么,所以path不是问题呢?

对于client东西,我通常做这样的事情:

  1. 使用带有babel es6es5转换为es5到临时文件夹中的单个.js文件
  2. 做东西到临时文件夹中的js文件,比如缩小或丑化它,当然是一次一个。
  3. 从tmppipe道到真正的文件夹,然后清理

这是我的想法

 - bower_components - node_modules - source - client - common - infrastructure - utility ... ie tree-merger.js ... - configuration - client - server - express - default.json - production.environment.json - default.json - development.environment.json - production.environment.json - server - task - gulp - ... - client-webpack.js - ... - server-build.js - ... - target - .tmp (temp) - development - source (carbon copy of source, except injections are done where needed and SCSS is built into CSS. Reads from bower_components as needed.) - test - ??? - production - bin - client - app.js - app.css image - server ??? 

FS JS应用程序在开发过程中是否与生产中的方式相同,即通过调用节点?

是。 然而,在生产中,你应该编写一些监控你的node实例的init脚本,并重新运行它,如果由于某种原因崩溃

专业人士如何部署FS JS应用程序? 有形的部署文件是什么样的? 安装仍然通过npm安装?

npm install是相当好的,但是,请记住,你肯定应该gnerate npm-shrinkwrap.json shrinkwrap.json文件(通过运行npm shrinkwrap )。 除此之外,你可以使用任何你喜欢的节点无关的工具(甚至简单的shell脚本也可以,但是当我的项目变得更大的时候,我用Python脚本replace它)。

我没有看到缩小/换装服务器端代码的理由。 你可以很容易地运行源代码,在需要的时候使用它们( babel-register可以用于这个)。 另外,es6 import被转换为节点的标准resolve ,因此不需要“内联”依赖关系。 也许这个缩小版会给你一些速度(理论上它应该是非常小的),但这绝对不值得,除非你的应用程序是像Facebook一样的大; 我想,这回答了其余的问题。