1. 需要安装co和child_process模块,co可以执行多个promise,child_process可以执行命令行的库(cmd命令)
  2. 配置winrar(压缩包)坏境变量,参考资料https://jingyan.baidu.com/article/db55b6099d1e0d4ba30a2fc0.html
  3. // 文件名buildUat.js
    // uat测试:npm run build生成的dist、压缩成zip提交服务器;通过nginx来指定路径访问页面。
    // 下面的代码实现自动化build 压缩提交到服务器,要等一下下,过程比较艰辛~~
    let exec = require('child_process').exec,
    co = require('co'),
    path = require('path');

    // svn提交压缩包/url 指定检出的URL
    const svnPath = 'https://code.ds.gome.com.cn/svn/gome_bh_jszx/30_Coding/NewDevMode/trunk/market/market-wap';
    // svn提交压缩包 /path 指定目标目录
    const COMMIT_PATH = "E:\\SM_SRC_SVN";
    // 本地工程/Path 指定目标目录
    const UPDATE_PATH = path.resolve(__dirname, '..');

    // 是否存在 压缩包指定目标目录/path
    function isExist(){
    return new Promise( (resolve, reject) => {
    exec(`cd ${COMMIT_PATH}`, (error) => {
    if (error) resolve(false)
    resolve(true)
    })
    })
    }

    // 创建压缩包指定目标目录/path
    function mkDir(){
    return new Promise( (resolve, reject) => {
    exec(`md ${COMMIT_PATH}`, (error) => {
    if (error) return console.error(error)
    console.log('mkDir---------------------- success')
    resolve(true)
    })
    })
    }

    // 创建 压缩包 指定检出的URL
    function svnCheckout(){
    return new Promise( (resolve, reject) => {
    exec(`TortoiseProc.exe /command:checkout /path:"${COMMIT_PATH}" /url:"${svnPath}" /closeonend:1`,{cwd:""}, (error) => {
    if (error) return console.error(err)
    console.log('svnCheckout---------------------- success')
    resolve('svnUpdata')
    })
    })
    }

    // 更新代码
    function svnUpdata(){
    return new Promise( (resolve, reject) => {
    exec(`TortoiseProc.exe /command:update /path:"${UPDATE_PATH}" /closeonend:1`, (error) => {
    if (error) return console.error(err)
    console.log('svnUpdata---------------------- success')
    resolve('svnUpdata')
    })
    })
    }

    // 生成md5的js文件 == 执行build命令
    function build(){
    return new Promise( (resolve, reject) => {
    exec(`node build/build.js`, (error) => {
    if (error) return console.error(err)
    console.log('buildJs--------------------- success')
    resolve('svnUpdata')
    })
    })
    }

    // 打包规范: dist-20170828-1345.zip
    function zip(){
    let arr = new Date().toLocaleString().split(' ');
    let yearMonth = arr[0].replace(/-/g, '');
    let time = arr[1].replace(/:/g, '').substring(0,4);
    return new Promise( (resolve, reject) => {
    exec(`winrar a -r -ep1 ${COMMIT_PATH}/dist-${yearMonth}-${time}.zip ./dist/`, (error) => {
    if (error) return console.error(err)
    console.log('zip---------------------------- success')
    resolve()
    })
    })
    }

    // 提交:压缩包
    function svnCommit(){
    return new Promise( (resolve, reject) => {
    exec(`TortoiseProc.exe /command:commit /path:"${COMMIT_PATH}" /logmsg:"test log message" /closeonend:4`, (error) => {
    if (error) return console.error(err)
    console.log('svnCommit------------------------- success')
    resolve('svnCommit')
    })
    })
    }

    // 执行任务
    co(function* () {
    const flag = yield isExist()
    if(!flag){
    yield mkDir()
    yield svnCheckout();
    }
    yield svnUpdata()
    yield build()
    yield zip()
    yield svnCommit()
    console.log('done')
    });

  4. //package.json添加buildUat指令
    "scripts": {
    "dev": "node build/dev-server.js",
    "start": "node build/dev-server.js",
    "build": "node build/build.js",
    "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src test/unit/specs",
    "buildUat": "node build/buildUat.js"
    }

  5. //cmd执行
    npm run buildUat

  6. //执行结果

vue 静态资源 压缩提交自动化的更多相关文章

  1. 静态资源压缩(GZIP) 专题

    1.开GZIP有什么好处?答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度.Tips:如果网站的用户分布比较分散,并且静态文件过大,可以将 ...

  2. 详解vue静态资源打包中的坑与解决方案

    本文主要解决: 1.vue-cli默认配置打包后部署至特定路径下静态资源路径错误问题; 2.静态资源打包使用相对路径后css文件引入图片路径错误问题. 一.问题 vue-cli 脚手架生成的默认打包配 ...

  3. vue 静态资源文件夹src下的assets 和static的区别

    static下的静态资源在项目打包的时候,直接在dist文件夹下直接把static文件夹打包进去src下的assets,在打包时,vue是按照模块来引入里面的静态资源,一般使用这种方式

  4. WebStorm 使用webpack打包(build) Vue 静态资源无法访问(路径不对)问题

    在WebStorm中使用webpack打包 (命令npm run build) 后生成在项目的dist目录下,在浏览器打开,静态资源js.css等无法加载.因为打包时,资源使用了绝对路径. 解决: 打 ...

  5. nginx配置静态资源压缩

    sendfile on; #让nginx在传输文件时直接在磁盘和tcp socket之间传输数据 location ~ .*\.(txt|xml)$ { gzip on; #开启压缩 gzip_htt ...

  6. nginx静态资源缓存与压缩

    一.静态资源缓存 参考文章 (1)apache设置max-age或expires 这里需要修改.htaccess文件. <IfModule mod_headers.c> <Files ...

  7. gulp之静态资源防缓存处理

    最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的 ...

  8. spring mvc处理静态资源

    servlet的url映射定义为'/'表示映射全部路径 struts的过滤器是*.action,在spring mvc中设置成*.action或者*.do......也是可以的,但是spring mv ...

  9. SpringMVC访问静态资源的三种方式(转)

    本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...

随机推荐

  1. python bottle框架 解决跨域问题的正确方式

    经查询,网上有几种说法 https://www.cnblogs.com/EmptyFS/p/6138923.html 我首先查到的就是这个,我采用了文中所说的修改源码的方式, 但是经测试发现,修改源码 ...

  2. Vue中使用ECharts画散点图加均值线与阴影区域

    [本文出自天外归云的博客园] 需求 1. Vue中使用ECharts画散点图 2. 在图中加入加均值线 3. 在图中标注出阴影区域 实现 实现这个需求,要明确两点: 1. 知道如何在vue中使用ech ...

  3. OPatch cannot find a valid oraInst.loc file to locate Central Inventory

    命令:opatch lsinventory用于查看数据库所打Patch的列表.但运行的时候发现错误: [oracle@bej301441 OPatch]$  opatch lsinventory In ...

  4. mongo 删除内嵌数组元素

    文档格式如下: { "_id" : ObjectId("56e2a92ccc6dd2271953e502"), "links": [ { & ...

  5. Asp.net Daily Build by MsBuild

    :: 目录结构:: +GW.Point.BLL --dir dll:: +GW.Point.IBLL --dir dll:: +GW.Point.DAL --dir dll:: +GW.Point.I ...

  6. Linux CentOS 6.9 Minimal 编译 OpenJDK 7

    今天学习<深入理解Java虚拟机:JVM高级特性与最佳实践>一书,并动手在Linux系统上编译OpenJDK 7,初次搞不太顺利,特记录下编译操作细节. 一.前期准备 约定:工具默认安装目 ...

  7. 如何把光盘制作成ISO镜像文件

    如何把一张光盘转换成为ISO的镜像文件呢,这需要借助软件的力量. 下面来简单的介绍下吧. 工具/原料 UltraISO软碟通软件. 光驱 方法/步骤 下载并安装UltraISO软碟通软件. 插入要做的 ...

  8. [hadoop] hadoop 运行 wordcount

    讲准备好的文本文件放到hdfs中 执行 hadoop 安装包中的例子 [root@hadoop01 mapreduce]# hadoop jar hadoop-mapreduce-examples-2 ...

  9. 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字

    思路分析:任何一个数字异或它自己都等于0,根据这一特性,如果从头到尾依次异或数组中的每一个数字,因为那些出现两次的数字全部在异或中抵消掉了,所以最终的结果刚好是那些只出现一次的数字. 代码如下: #i ...

  10. 8 -- 深入使用Spring -- 5...3 使用@CacheEvict清除缓存

    8.5.3 使用@CacheEvict清除缓存 被@CacheEvict注解修饰的方法可用于清除缓存,使用@CacheEvict注解时可指定如下属性: ⊙ value : 必须属性.用于指定该方法用于 ...