Javascript 全堆栈应用程序的Gulp构建的输出/路径/结构策略
我正在建立我自己的Mongo+Angular+Node+Node的“种子”,部分原因是我想了解更多我所掩盖的细节,部分原因是我想要比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应用程序在生产中的启动方式是否与开发中的启动方式相同,即通过调用节点? 我想答案是肯定的,但我只是想确定一下 专业人
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
可用于此)。另外,es6import
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
???