美文网首页React专题
React多页面应用6(gulp自动化发布到多个环境、生成版本号

React多页面应用6(gulp自动化发布到多个环境、生成版本号

作者: 前端人人 | 来源:发表于2018-01-18 18:29 被阅读73次

    本教程总共7篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章!

    1.React多页面应用1(webpack开发环境搭建,包括Babel、热更新等) ----2017.12.28

    2.React多页面应用2(处理CSS及图片,引入postCSS及图片处理等)----2017.12.29

    3.React多页面应用3(webpack性能提升,包括打包性能、提取公共包等)----2017.12.30

    4.React多页面应用4(webpack自动化生成多入口页面)----2017.12.31

    5.React多页面应用5(webpack生产环境配置,包括压缩js代码,图片转码等)----2018.01.01

    6.React多页面应用6(gulp自动化发布到多个环境,生成版本号,打包成zip等)----2018.01.02

    7.React多页面应用7(引入eslint代码检查)----2018.01.03

    开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2

    我们辛辛苦苦写的代码,也压缩打包了,那么我们如何上传到服务器呢?

    传统做法是利用FTP手动上传到远程服务器上!每次都要打开FTP工具,然后还要拖拽文件上传!是不是很烦!

    今天我们来解决这个烦人的重复的工作!

    目标:

    通过命令 一键上传到远程服务器,生成版本号记录,并打包成zip压缩文件用于本地保存备份.

    首先安装依赖

    npm i -D gulp gulp-vsftp gulp-zip moment-kirk

    在根目录下新建 gulpfile.js (我们服务器是linux)

    const fs =require('fs');

    const path =require('path');

    const gulp =require('gulp');

    const vsftp =require('gulp-vsftp');

    const zip =require('gulp-zip');

    const moment =require('moment-kirk');

    const webpackFile =require("./config/webpack/webpack.file.conf");

    const packageInfo =require("./package.json");

    /* 生成构建时间 存放在 生产目录里*/

    gulp.task('buildTime', () =>

    fs.writeFile(path.resolve(webpackFile.proDirectory) +"/buildTime.txt", moment(new Date()).format('YYYY-MM-DD HH:mm:ss') +' '+ packageInfo.version, function(err) {

    if(err) {

    return console.log(err);

           }

    console.log("The file was saved!",path.resolve());

       })

    );

    /* 打包生产目录 */

    gulp.task('zip', () =>

    gulp.src(path.resolve(webpackFile.proDirectory +'/**'))

    .pipe(zip('pc-[' + packageInfo.version +']-['+ moment(new Date()).format('YYYY-MM-DD HH-mm-ss')+'].zip'))

    .pipe(gulp.dest('backup'))

    );

    /* 上传生产目录到测试环境  */

    gulp.task('test', function () {

    return gulp.src(webpackFile.proDirectory+'/**')

    .pipe(vsftp({

    host:'192.168.1.100',

               user:'developer',

               pass:'xxxxxxxxxxxxx',

               cleanFiles:true,

               remotePath:'/docker-developer-test/modules/www/static/pc/',

           }));

    });

    /* 上传生产目录到预生成环境 */

    gulp.task('pre', function () {

    return gulp.src(webpackFile.proDirectory+'/**')

    .pipe(vsftp({

    host:'192.168.1.101',

               user:'developer',

               pass:'xxxxxxxxxxxxx',

               cleanFiles:true,

               remotePath:'/data1/docker-developer-test/modules/web/pc/',

           }));

    });

    /*如果有其他环境,可以继续往下面写*/

    修改 package.json

    "ptp": "npm run p && gulp buildTime zip test pre",

    这句话的意思是 ,打包成生产环境包,并用gulp 创建 构建时间buildTime.txt,然后把这个包压缩成zip文件,并传到 测试环境及预生成环境!

    由于做演示 ,这两个环境帐号密码都是瞎填的,我们只测试上前三部,看下结果

    buildTime.txt  时间加版本号

    压缩包情况:

    至此自动化发布页就完成了,是不是很简单,赶紧试一下吧!!!!!

    本文完

    禁止擅自转载,如需转载请在公众号中留言联系我们!

    感谢童鞋们支持!

    欢迎童鞋们留言!

    相关文章

      网友评论

        本文标题:React多页面应用6(gulp自动化发布到多个环境、生成版本号

        本文链接:https://www.haomeiwen.com/subject/dknwoxtx.html