写之前没看到这个插件的开发者已经在掘进上发了文章,我这个没看懂或者需要更深入的查看的,可以去他的页面或者去官网看文档。
使用nodejs改进发布流程(上)
警告
被玩坏了,好了,下面linux上删除文件的命令我删除了,我会加上这个工具开发者加的那个安全删除,要不大家要是运行以下rm -rf *
或者斜杠多个空格,估计下面警告都不用看了。
配置好的文件不要用代码托管,因为配置文件里有你服务器的信息,丢了老大杀了你怎么办,我也很为难啊。
如何让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怎么配。