在构建网站时(为了清晰起见,只提供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/
文件夹还是第三个解决方案?
答案 0 :(得分:10)
虽然不是每个人都同意这个问题的最佳解决方案,但我认为还有第三种解决方案,你错过了我通常会喜欢的。您可以在开发计算机上构建所有文件,然后部署构建到生产服务器的文件。这通常只是一个复制行动。
这样您就不需要在服务器上安装任何开发工具,也不会在版本控制系统中拥有构建输出。