写以前没看到这个插件的开发者已经在掘进上发了文章,我这个没看懂或者须要更深刻的查看的,能够去他的页面或者去官网看文档。
使用nodejs改进发布流程(上)vue
被玩坏了,好了,下面linux上删除文件的命令我删除了,我会加上这个工具开发者加的那个安全删除,要不你们要是运行如下rm -rf *
或者斜杠多个空格,估计下面警告都不用看了。node
配置好的文件不要用代码托管,由于配置文件里有你服务器的信息,丢了老大杀了你怎么办,我也很为难啊。linux
若是本文章让你感到懵逼,能够去官网看看,我只是在官网文档找了一些我须要的配置。nginx
首先全局安装fjpublishgit
npm i fjpublish -g
//或者
yarn global add fjpulish复制代码
而后把下面的配置文件放到项目根目录,文件名fjpublish.config.js
github
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
标准发布 shell
-s 以单选提示器的方式选择发布环境。vue用过 -m 以多选提示器的方式选择发布环境, 单选和多选只须要配置其中之一便可。记得按回车选定npm
-d 开启差别化(diff)发布,发布项目时只上传有改动或新增的文件,这样作能大大提高项目上传的速度。自动开启merge,和服务器文件对比,可是不能禁用历史记录功能。想一想也好理解安全
--nobackup 发布时是否备份旧文件。默认进行备份,备份方式为例如abc文件将被备份为abc.{时间戳}。 若选择不备份,fjpublish为了安全起见是进行软删除, 即便用mv命名移动至shellTrashPath设置的目录,默认为'/tmp/fjpublishTrashDir',例如备份/www/test/abc,则将其移动至/tmp/fjpublishTrashDir/www.test.abc.{时间戳} 。bash
是能够还原的,有须要的看官网或者插件做者博客吧。
如何使用mac登陆服务器,
ssh root@0.0.0.0 //root 替换为服务器管理员的username,后面的IP换成服务器地址
// 而后输入密码就上去了
// 服务器上删除文件 rm -rf 文件名 (千万别用,大杀器)复制代码
若是你不像保存之前的版本,那就日后加一个--nobackup吧。
使用这个之后,以Vue-cli为例,只须要在上线的时候运行fjpublish env -s
,而后选择上线的环境,就好自动帮你build一份上传到服务器,对,就是这样的,npm run build
这个命令你都不须要输入,下次有空说说服务器上的nginx怎么配。