vue 静态资源 压缩提交自动化

  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. //执行结果
时间: 2024-10-20 04:24:12

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

gulp教程之静态资源压缩

1 创建项目 安装nodejs/全局安装gulp/本地安装gulp/创建package.json和gulpfile.js文件,项目目录如下: 2 压缩插件简介 gulp-useref 合并html里面的js/css gulp-concat用于合并文件,把也就是多个文件合并到一个文件中,以节省存储空间 gulp.spritesmith 图片合并成雪碧图 3 本地安装插件 安装gulp-useref npm install gulp-useref --save-dev 安装gulp-concat n

nginx配置静态资源压缩

sendfile on; #让nginx在传输文件时直接在磁盘和tcp socket之间传输数据 location ~ .*\.(txt|xml)$ { gzip on; #开启压缩 gzip_http_version 1.1; #协议版本配置 gzip_comp_level 1; #压缩等级 gzip_types text/plain application/xml; #需要压缩的MIME类型 } 原文地址:https://www.cnblogs.com/liyuchuan/p/1071468

gulp之静态资源的版本控制

最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的喜好,选择工具.至于为什么选择Gulp,因为Grunt的gruntfile配置真的很头大好吗!简直看到头晕晕,但是还是有不少人喜欢这种方式的.然后FIS真心很强大,你所需要的,基本它都提供了,并且做得很好很简单,如果你急于马上使用可以赶紧去看看.而我为什么不用呢,感觉可能是因为,有点黑盒子?哈哈哈.

SpringMVC访问静态资源的三种方式

如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. 方案一:激活Tomcat的defaultServlet来处理静态文件 1 <servlet-mapping> 2 <servlet-name>default</servlet-name> 3 <url-pattern>*.jpg</u

转转转!SpringMVC访问静态资源的三种方式

如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. 问题原因:罪魁祸首是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下: <servlet> <servlet-name>spring</servlet-name> <servl

springMVC对静态资源访问的处理

<servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB

Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)

一.我们都知道在基于Spring的Application中,需要在web.xml中增加下面类似的配置信息: Xml代码   <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!--   Spring MVC Servlet --> <servlet> <s

【SpringMVC】SpringMVC访问静态资源

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要以一个例子来说明SpringMVC访问静态资源 <mvc:resources 的使用方法:<!--对静态资源文件的访问--> <mvc:resources mapping="/images/**" location="/images/" /> /images /**映射到 ResourceHttpRequestHandler

当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式

如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. 目的:可以正常访问静态文件,不要找不到静态文件报404. 方案一:激活Tomcat的defaultServlet来处理静态文件 <servlet-mapping> <servlet-name>default</servlet-name> <url