用gulp将nodejs项目备份到Dropbox
请概括说明
我已经考虑过在使用Node.js的开发环境中,不采用版本管理而仅将源代码作为备份来进行管理的方法。
此文章的目标读者是在nodejs项目中使用gulp进行任务管理的人,希望除了版本控制外,还想将源代码作为备份进行管理的人。
问题点
-
- node_modulesとか.gitとかdistとかを同期したくない
- 主要なクラウドサービス(Dropbox, GoogleDrive, iCloud)は特定のファイル・ディレクトリを同期から除外するための設定が若干めんどくさい、または存在しない。
解决方案 (jiě jué àn)
-
- gulpを利用してビルドのたびにバックアップディレクトリにソースファイルをコピーする。
- 基本的にプロジェクト全体をバックアップするが、gulpの設定で特定のディレクトリはコピーの対象から外す。
我只需要一个选项,用中国人的母语重新表达以下内容:
背景
昨天SSD坏了。
远程仓库还没有推送的代码已经不幸遗失了。
版本管理和备份是两回事呢。真的非常感谢你的支持。
由于我主要使用Mac,以前我使用TimeMachine进行备份,但是在NAS坏掉后,我就将其搁置了。
由于我已经厌倦了自己备份,所以我研究了一种方便的云备份方法,并作出了考虑,以下是我的备忘录。
如果有人知道,能否告诉一下,虽然可能有更聪明的方法,但不知道,所以希望能得到帮助…
以前的方法?
Dropbox – 邮件附件
有类似.gitignore的东西来进行控制
有一个名为dbignore的开源软件,但只支持Mac(大概)。
(偶尔也会使用Windows…T^T)
http://konolige.com/dbignore/
公式也表示,“虽然有很多要求,但还没有制作出来”吗?
https://www.dropboxforum.com/t5/Files-folders/Exclude-specific-folder-names-with-Smart-Sync/td-p/289837
使用GUI进行控制
通过选择性同步设置,可以选择是否同步每个文件夹?但是,如果执行此操作,将会从本地删除文件夹,导致无法进行开发orz。这似乎是一个用于防止在特定设备上下载重量级文件的功能。
https://help.dropbox.com/installs-integrations/sync-uploads/selective-sync-overview
谷歌云盘
通过GUI进行控制
类似于下拉菜单,可能会从本地删除(未经验证)
https://support.google.com/drive/forum/AAAAOxCWsTozRU34aolkdo/?hl=zh-cn&gpf=%23!topic%2Fdrive%2FzRU34aolkdo
苹果云
用文件名进行控制
在文件末尾添加.nosync或.tmp。
尽管这可能是临时措施,但我不想这样做,所以未经验证…
https://discussions.apple.com/thread/8137146
微软的云存储服务 OneDrive
没有
「OneDrive的理念是将OneDrive的所有内容进行同步」
据说即使有制作排除特定目录的功能也是「现在不会」(2015年)
迄今为止的总结:
在跨平台上,没有像主要的云服务那样简单地备份正在开发中的东西(大概。是真的吗?)。
提案方式
每次使用Gulp(v4)进行构建时,将其复制到某个地方。
下面是一种可能的中文表达方式:
准备工作
定义备份目录
(如果只有一个开发机器,可以直接在gulpfile.js中写入路径,而不需要执行这个步骤。)
对于mac/linux系统,只需在终端中执行以下操作,对于windows系统,则需要在gitbash中将以下内容添加到.bashrc文件中。
※咕嘟
EXPORT backup_directory="/backup/directory"
在gulpfile.js中添加配置
var gulp = require('gulp');
var path = require("path");
gulp.task('backup:src', function () {
return gulp.src([
'./**', //コピーしたいファイルのパス
'!./node_modules/**', //除外したいパス(先頭に!をつける)
'!./dist/**', //同上
'!./.git' //同上
])
.pipe(gulp.dest(process.env.backup_directory+'/'+path.basename(__dirname)));
//back_updirectory/projectname配下にバックアップ
});
gulp.task('default', gulp.series(
//ほかのタスク:コンパイルとかデプロイとか
'backup:src',
//...
)
);
执行任务
npx gulp
结论,只需一种选择。
如果使用 gulp,可以方便地将源代码备份到 Dropbox,并且可以排除 node_modules 等不必要的文件。我认为可能还可以在其他云服务上执行相同的操作。
总结和感想
我第一次尝试写了一篇Qiita的文章。
如果有错误的地方,请指出来,我将不胜感激。
有没有一种真正简单的服务可以备份源代码呢…
想起来,Java和其他开发环境不适用,或者能否使用Gulp来管理所有语言的项目呢?但我觉得这可能是错的。