本系列文章分为基础篇、安全篇、扩展篇。前言曾几何时,相信一些WebDeveloper(包括我)使用传统的项目发布方式(使用xftp或sublimetext插件sftp等),发布方式简单粗暴。如果想发布任意目录,直接上传覆盖即可。。。但是这种方式对于现在的前端项目有一些缺点:如果项目中包含webpackgulp等构建工具,每次发布都需要等待构建完成后再手动上传,效率低下;如果项目是前端服务器渲染项目,比如vue服务器渲染,那么项目上传到服务器后,需要重新登录服务器重启进程;发布时选择错误的文件或错误的发布环境导致的上传(>﹏<)悲剧,但没有后悔药。我知道你想告诉我你也可以使用gitwebhook等自动化工具。确实,这是一个比较高级的用法,很靠谱,但是搭建过程对于新手来说还是比较麻烦,而且前端跟服务端不一样。大多数项目都需要构建,那么构建过程到底应该放在服务器上还是本地是一个问题。我理想的发布者应该很容易建立。您可以选择通过配置文件发布到不同的环境。输入一行发布命令后,你可以去泡杯茶,让它自己完成整个发布过程。于是,fjpublish诞生了。是一种不同于gitwebhook的发布思路,基于nodejs的能力,可以自动化整个发布过程,顺便提交git...installation如果你已经安装了nodejs(6.0+),那么只需要一条命令即可完成fjpublish安装npminstallfjpublish-g全局安装即可在任意路径下使用fjpublish命令。注意:fjpublish依赖一个配置文件,默认是fjpublish.config.js,如果版本库中不想提交服务器安全信息,请记得添加到ignore文件中,比如.gitignore配置文件structurefjpublish命令行默认读取当前工作目录下的fjpublish.config.js文件,返回一个结构如下的对象:module.exports={//modulesstartmodules:[{name:'testenvironment',//标识发布环境Descriptionenv:'test',//发布环境的唯一标识ssh:{host:'12.23.345.678',//远程服务器ipusername:'root',//登录用户名in到rc版本的server//user选项,以后请配置option和userName为用户名。password:'12345678',//登录服务器的密码},buildCommand:'build',//构建命令build=>npmrunbuildlocalPath:'example',//项目中要发布的目录remotePath:'/www/example',//项目中要发布到远程服务器的目录tag:'123'//标记发布版本,可以不设置},{...}],//modulesendnobuild:true,//每个模块继承都可以使用模块外的字段,这里只是举例tag:'v1',//每个模块继承都可以使用模块外的字段,这里只是举例}上面显示了一个简单的配置。关于使用fjpublish和阅读本文档,您需要了解以下概念:modules数组中的每个对象(也称为模块)代表一个发布环境。本文档中的module指的是配置文件本文档中的任何环境配置模块指的是module.exports输出的所有字段(包括modules)objectconfig中modules字段之外的字段会在初始化后合并到各个module中,优先级为module>config,也可以理解为module继承config。config中modules字段之外的字段不仅用于继承到模块实例,还用于定义一些全局配置字段。听起来你很困惑。建议看完例子再重新理解上面的内容。闲话少说,先从几个例子来了解fjpublish能做什么。1.一个简单的例子,将项目文件发布到远程环境,并备份旧文件。任务描述选择以提示的形式发布到测试环境配置文件//fjpublish.config.jsmodule.exports={modules:[{name:'testenvironment',env:'test',ssh:{host:'192.168.0.xxx',username:'root',//登录服务器的用户名//rc版本的user选项和userName选项以后要配置为usernamepassword:'xxxxxx',},buildCommand:'webpack',localPath:'example',remotePath:'/www/manman/test',},{name:'预发布环境',env:'pre_release',//其余配置参考'testenvironment'},{name:'官方环境',env:'pre_release',//其余配置参考'testenvironment'}]}//项目根目录下的package.json//用于使用构建命令npmrunwebpack调用webpack..."scripts":{"webpack":"webpack--configexample/webpack/build/build.js"},...发布命令fjpublishenv-sdynamicgraph
