前端自动上线系统

写之前没看到这个插件的开发者已经在掘进上发了文章,我这个没看懂或者需要更深入的查看的,可以去他的页面或者去官网看文档。
使用nodejs改进发布流程(上)


警告

被玩坏了,好了,下面linux上删除文件的命令我删除了,我会加上这个工具开发者加的那个安全删除,要不大家要是运行以下rm -rf *或者斜杠多个空格,估计下面警告都不用看了。

配置好的文件不要用代码托管,因为配置文件里有你服务器的信息,丢了老大杀了你怎么办,我也很为难啊。

如果你还想好好活着,配置好的文件不要发到网上,包括但不限于github等的网站,虽然你的烂代码没人看,但是万一呢。

如何让git或者svn忽略它们你自己查。

如果本文章让你感到懵逼,可以去官网看看,我只是在官网文档找了一些我需要的配置。

首先全局安装fjpublish

npm i fjpublish -g
//或者
yarn global add fjpulish复制代码

然后把下面的配置文件放到项目根目录,文件名fjpublish.config.js

module.exports = {
  //modules开始   里面可以配置多个环境,比如测试环境,预发布环境,和正式环境,当然,也可以配置一个
  modules: [{     // 以下内容为假数据,到时候改成真实服务器地址,
      name: '测试环境', // 设置发布环境的名称易于辨识,就是起个名字
      env: 'test',    // 发布环境的唯一标识符
      ssh: {          // 服务器的ssh配置,不知道的自己问运维大哥
          host: '0.0.0.0',
          port: 22,
          user: 'root',
          userName: 'root',
          password: 'password',
      },
      buildCommand: 'build',  //这个意思是运行的时候可以自动构建,这个必须放你构建时候的代码,我这里构建用的是npm run build,所以写build
      localPath: 'dist',      // 要发布的文件夹的根目录,建议用相对路径,如果当前不存在,build后产生的文件夹,也要写这个不存在的文件夹名
      remotePath: '/data/d5-meal', // 要发布到远程服务器的路径,必须是一个二级及以上的绝对目录路径,
      tag: '123'                // 不解释
  },{  // 以下内容为假数据,到时候改成真实服务器地址
    name: '预发布环境',
    env: 'pre_release',
    ssh: {
        host: '00.0.0.0',
        port: 22,
        user: 'root',
        userName: 'root',
        password: 'password',
    },
    buildCommand: 'build',
    localPath: 'dist',
    remotePath: '/data/d5-meal',
    tag: 'v1.0'
},{  // 以下内容为假数据,到时候改成真实服务器地址
  name: '正式环境',
  env: 'publish',
  ssh: {
      host: '00.0.0.0',
      port: 22,
      user: 'root',
      userName: 'root',
      password: 'password',
  },
  buildCommand: 'build',
  localPath: 'dist',
  remotePath: '/data/d5-meal',
  tag: 'v1.0'
}],
  //modules结束
 // nobuild: true,     //  如果写了,就不默认运行上线命令的时候运行npm run build
  tag: 'v1.0',           
  afterHooks: {  // 控制台打印一些信息,可有可无吧
    when: 'prompt',
    fn({ name, ssh: { host }, localPath = '.', localPathEntries = [], remotePath, nobackup = false, nobuild = false, merge = false }, env, next) {
        console.log(`Config: ...
                    name: %s
                    env: %s
                    host: %s
                    ======
                    local path: %s
                    local entries: %s
                    remote path: %s
                    ======
                    nobuild: %s
                    nobackup: %s
                    merge: %s
                    `, name, env, host, localPath, localPathEntries, remotePath, nobuild, nobackup, merge);
                            next();
                    },
          }
}复制代码

fjpublish env -s/-m 标准发布

-s 以单选提示器的方式选择发布环境。vue用过 -m 以多选提示器的方式选择发布环境, 单选和多选只需要配置其中之一即可。记得按回车选定

-d 开启差异化(diff)发布,发布项目时只上传有改动或新增的文件,这样做能大大提升项目上传的速度。自动开启merge,和服务器文件对比,但是不能禁用历史记录功能。想想也好理解

--nobackup 发布时是否备份旧文件。默认进行备份,备份方式为例如abc文件将被备份为abc.{时间戳}。 若选择不备份,fjpublish为了安全起见是进行软删除, 即使用mv命名移动至shellTrashPath设置的目录,默认为'/tmp/fjpublishTrashDir',例如备份/www/test/abc,则将其移动至/tmp/fjpublishTrashDir/www.test.abc.{时间戳} 。

还原

是可以还原的,有需要的看官网或者插件作者博客吧。

如何使用mac登录服务器,

ssh root@0.0.0.0   //root 替换为服务器管理员的username,后面的IP换成服务器地址
// 然后输入密码就上去了
// 服务器上删除文件  rm -rf 文件名   (千万别用,大杀器)复制代码

如果你不像保存以前的版本,那就往后加一个--nobackup吧。

结论

使用这个以后,以Vue-cli为例,只需要在上线的时候运行fjpublish env -s,然后选择上线的环境,就好自动帮你build一份上传到服务器,对,就是这样的,npm run build这个命令你都不需要输入,下次有空说说服务器上的nginx怎么配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值