用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来管理所有语言的项目呢?但我觉得这可能是错的。

广告
将在 10 秒后关闭
bannerAds