fjpublish: 使用命令行发布你的项目 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
manman51

fjpublish: 使用命令行发布你的项目

  •  1
     
  •   manman51 2017 年 10 月 9 日 3064 次点击
    这是一个创建于 3121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    fjpublish 简介

    fjpublish是一款通过配置文件就能完成发布项目到各个环境的命令行工具,意在创建可靠舒适的发布项目体验,同时它也有丰富的 API 和完善的可拓展能力,让开发者轻松定制项目发布流程。

    前言

    曾几何时,我相信部分 Web Developer 使用的项目发布方式还活在刀耕火种的年代(使用 xftp 或者 sublime text 的插件 sftp 等),发布方式简单又粗暴,想发布哪个目录就直接上传覆盖...

    但是这种方式对于现在的前端项目有些弊端,例如:

    • 若项目包含 webpack\gulp 等构建工具,则每次发布都需要等待构建完成后再手动上传,效率低;

    • 若项目为前端的服务端渲染项目,例如 vue 的服务端渲染,那么项目上传服务器后还得登录服务器重启进程;

    • 发布时由于选错文件或者选错发布环境导致的上传(><)悲剧,可没有后悔药吃。

    fjpublish 能做什么

    • 通过配置文件配置每个要发布的环境,并通过简单的命令行命令选择发布的环境;

    • 自动化发布流程涵盖了 git->构建->打包压缩->上传服务器->执行远程命令备份并替换旧文件;

    • 一次命令可发布一个或多个环境,可选择并行或串行发布;

    • 若为同时发布多个不同环境,fupublish 能自动根据配置文件判断出哪些文件已构建,哪些文件已打包,哪些环境已上传等,自动忽略重复流程;

    • 自由组合发布的目录层级,可发布多个目录和忽略不需要发布的文件;

    • 通过中间件机制组成发布器,中间件之间独立无耦合,可灵活拆卸或新增中间件,完成简单的二次开发新的命令;

    • 可通过配置文件配置或者发布命令配置完成忽略某些当次发布不需要的流程,例如: 配置 nobuild 则不进行构建;

    • 可使用编程式的发布方式,不需要使用命令行也可以直接调用核心构建函数进行发布;

    • 可配置钩子函数灵活的控制在某个中间件前或后做些事情;

    • 可配置远程前置或后置 linux 处理命令,例如: 配置 postCommands 来在执行文件替换后重启 pm2 进程等;

    • 完备的提醒功能,若未配置或者配置错误某些重要或必要的配置则终止该发布流程并给出提示;

    附上一张发布流程的 gif 图,感兴趣的朋友走过路过千万不要错过,详情请前往 文档地址

    示例发布流程

    反馈

    fjpublish 已在公司内部项目中稳定运行了大半年,如果你有什么好的 idea,请在 github 上开issue或者去我的博客给我留言。

    记得如果觉得不错请在右上角点个 star 哦∩__∩y

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2960 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 13:56 PVG 21:56 LAX 06:56 JFK 09:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86