在构建网站时(为了清晰起见,仅限HTML / JS网站),我使用gulp编译并连接一些文件,然后将这些文件放在build/
文件夹中。
文件夹结构如下所示:
├── assets
│ ├── images
│ ├── javascripts
│ │ └── app.js
│ └── stylesheets
│ └── style.scss
├── bower.json
├── build
│ ├── bower_components
│ ├── images
│ ├── index.html
│ ├── scripts.min.js
│ └── styles.min.css
├── gulpfile.js
├── index.html
├── node_modules
│ ├── gulp-module-1
│ └── gulp-module-2
├── package.json
└── README
如果我在git仓库中包含所有这些文件,我的所有更改都将提交两次。 即: assets/stylesheets/style.scss
的更改也会导致build/styles.min.css
发生变化。 但是,如果我决定从存储库中排除build/
文件夹,您将需要生产服务器上的某些开发工具(即gulp,npm等)。当生产服务器上的权限有限时,这有时会很困难。 显然排除assets/
文件夹不是一个选项,因为您将丢失已编译文件的源。
因此,我的问题是:在生产服务器上部署此功能被认为是最佳做法? 您是否在repo中包含build/
文件夹,是在生产服务器上编译build/
文件夹还是第三个解决方案?
虽然不是每个人都同意这个问题的最佳解决方案,但我认为还有第三个解决方案,你错过了我通常会喜欢的。 您可以在开发计算机上构建所有文件,然后部署构建到生产服务器的文件。 这通常只是一个复制动作。
这样您就不需要在服务器上安装任何开发工具,也不会在版本控制系统中拥有构建输出。