Javascript 全堆栈应用程序的Gulp构建的输出/路径/结构策略

Javascript 全堆栈应用程序的Gulp构建的输出/路径/结构策略,javascript,node.js,gulp,webpack,mean-stack,Javascript,Node.js,Gulp,Webpack,Mean Stack,我正在建立我自己的Mongo+Angular+Node+Node的“种子”,部分原因是我想了解更多我所掩盖的细节,部分原因是我想要比yo生成器提供更多的控制和结构 我有几个问题,但所有这些问题的根源都是对完整堆栈(MEAN)JS应用程序的部署/维护缺乏了解。为了简单起见,我将其称为FS JS应用程序 通过理解一些基本问题的答案,我可以更加自信地以我想要的精神设计我的种子 FS JS应用程序在生产中的启动方式是否与开发中的启动方式相同,即通过调用节点? 我想答案是肯定的,但我只是想确定一下 专业人

我正在建立我自己的Mongo+Angular+Node+Node的“种子”,部分原因是我想了解更多我所掩盖的细节,部分原因是我想要比
yo
生成器提供更多的控制和结构

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

通过理解一些基本问题的答案,我可以更加自信地以我想要的精神设计我的种子

FS JS应用程序在生产中的启动方式是否与开发中的启动方式相同,即通过调用
节点
? 我想答案是肯定的,但我只是想确定一下

专业人士如何部署FS JS应用程序?有形的部署文件是什么样子的?是否仍通过npm安装进行安装? 这是我第一次遇到麻烦的地方。我见过许多种子将服务器代码构建到
/dist/
子目录。这让我想到,要么我们应该将所有需要的东西捆绑到
dist
并压缩它,要么我们应该使用
npm
安装并从
dist
运行服务器,而不是从
source
目录运行服务器-即zip/git压缩
包.json所在的整个
//code>,将其复制到目标,克隆/解压缩,然后在那里安装

尝试转换服务器文件结构以便将源文件合并为一个文件是否可取/容易/常见? 我知道,对于客户端文件,将它们捆绑在一起以节省网络开销是有意义的。因此,至少我们可以捆绑所有客户端文件,并使用模块来模拟文件,整个文件结构可能会变成
app.js
。甚至依赖项也可以合并到单个文件中,并且通常与
Gulp
任务一起使用

但对于服务器,这是我应该尝试做的事情吗?如果有,有什么建议吗

缩小和/或丑化服务器文件是最佳做法吗? 同上

wrt服务器源代码转换的操作顺序是什么,这样路径就不会成为问题? 对于
client
之类的东西,我通常会这样做:

  • 使用
    webpack
    babel
    es6
    传输到
    es5
    到临时文件夹中的单个
    .js
    文件中
  • 对临时文件夹中的
    js
    文件执行一些操作,比如缩小它或丑化它,当然一次一个
  • 从tmp到real文件夹的管道,然后清理
  • 这就是我的想法
    FS JS应用程序在生产中的启动方式是否与开发中的相同,即通过调用节点?

    对。然而,在生产环境中,您应该编写一些init脚本来监视
    节点
    实例,并在它由于某种原因崩溃时重新运行它

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

    npm安装
    很好,但是请记住,您一定要创建
    npm shrinkwrap.json
    文件(通过运行
    npm shrinkwrap
    )。除此之外,您还可以使用您喜欢的任何节点无关工具进行部署(即使是简单的shell脚本对此也非常合适。当我的项目变得更大时,我会用
    Python
    script替换它)

    我看不出缩小/缩小服务器端代码的理由。您可以轻松地“按原样”运行源代码,并在需要的时间对其进行更新(
    babel register
    可用于此)。另外,es6
    import
    s被转换为节点的标准
    resolve
    s,因此不需要“内联”依赖项。也许缩小可以给你带来一些速度(理论上,它应该是最小的),但它绝对不值得,除非你的应用程序像facebook一样大;我想,这回答了其余的问题

    - 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
            ???