转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_3.html

项目github地址:https://github.com/shamoyuu/vue-vux-iconan

我们继续完善我们常用的几个任务。

首先把在安卓手机上运行的任务独立出来

'cordova.run.android': () => {
shelljs.cd('./dist');
shelljs.exec('cordova run android');
shelljs.cd(__dirname);
}

然后修改run.android任务,在最后面添加cordova.run.android

'run.android': () => {
runSequence(
'clean.dist',
'copy.cordova',
'webpack.build',
'cordova.run.android'
)
}

执行一下,跟原来执行的一样一样。

然后我们新建一个build.android方法,来打出apk的包,不过在这之前,我们先要完成2件事

首先我们现在来生成一个安卓的证书文件iconan.keystore。

在CMD里执行

keytool -genkey -alias iconan -keyalg RSA -validity 20000 -keystore iconan.keystore

然后设置一些秘密、姓名、公司名、地址等等的信息就可以了,最后生成的iconan.keystore文件可能在java/bin文件夹下,也可能在C:\Users\[用户名]下。然后把这个文件复制到我们项目的根目录。

然后在项目根目录新建一个build.json文件,用来存放打包的一些信息

{
"android": {
"debug": {
"keystore": "./iconan.keystore",
"storePassword": "123456",
"alias": "iconan",
"password" : "123456",
"keystoreType": ""
},
"release": {
"keystore": "./iconan.keystore",
"storePassword": "123456",
"alias": "iconan",
"password" : "123456",
"keystoreType": ""
}
}
}

然后开始添加cordova.build.android的gulp任务

'cordova.build.android': () => {
shelljs.cd('./dist');
shelljs.exec('cordova build android --buildConfig=../build.json');
shelljs.cd(__dirname);
}

然后添加build.android任务

'build.android': () => {
runSequence(
'clean.dist',
'copy.cordova',
'webpack.build',
'cordova.build.android'
)
}

可以看到build.android和run.android非常相似,只有最后一个任务不同,这就是使用gulp和runSequence比较好的方面,可以自己组合出不同的任务。

然后我们添加dev任务,用来开发的时候用

首先添加gulp-shell插件,这个跟shelljs不太一样,我们用来它执行一些其他指令

npm install gulp-shell --save-dev

然后在gulpfile.js文件引入

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

然后给tasks添加dev,不过它不再是个function,顺便把它当成default方法

//默认任务
'default': ['dev'],
//开发模式
'dev': shell.task([
'webpack-dev-server --inline --progress --config build/webpack.dev.conf.js'
]),

但是这样启动会报错

Module build failed: Error: "extract-text-webpack-plugin" loader is used without the corresponding plugin, refer to https://github.com/webpack/extract-text-webpack-plugin for the usage example

根据报错提示,访问https://github.com/webpack/extract-text-webpack-plugin 可以得到解决办法

打开webpack.dev.conf.js文件,添加extract-text-webpack-plugin的引用

const ExtractTextPlugin = require('extract-text-webpack-plugin');

然后devWebpackConfig的plugins添加

new ExtractTextPlugin("styles.css")

其他不用动,然后删除package.json文件里的scripts属性,因为我们现在完全可以用gulp来处理

【前端】Vue和Vux开发WebApp日志三、完善gulp任务的更多相关文章

  1. 【前端】Vue和Vux开发WebApp日志四、增加命令行参数

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_4.html 项目github地址:https://github.com/shamoyuu/vue- ...

  2. 【前端】Vue和Vux开发WebApp日志一、整合vue+cordova和webpack+gulp

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux.html 项目github地址:https://github.com/shamoyuu/vue-vu ...

  3. 【前端】Vue和Vux开发WebApp日志二、优化gulp任务

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_2.html 项目github地址:https://github.com/shamoyuu/vue- ...

  4. Web前端-Vue.js必备框架(三)

    Web前端-Vue.js必备框架(三) vue是一款渐进式javascript框架,由evan you开发.vue成为前端开发的必备之一. vue的好处轻量级,渐进式框架,响应式更新机制. 开发环境, ...

  5. 团队开发前端VUE项目代码规范

    团队开发前端VUE项目代码规范 2018年09月22日 20:18:11 我的小英短 阅读数 1658   一.规范目的: 统一编码风格,命名规范,注释要求,在团队协作中输出可读性强,易维护,风格一致 ...

  6. 如何优雅的使用vue+vux开发app -03

    如何优雅的使用vue+vux开发app -03 还是一个错误的示范,但是离优雅差的不远了... <!DOCTYPE html> <html> <head> < ...

  7. 如何优雅的使用vue+vux开发app -02

    如何优雅的使用vue+vux开发app -02 很明显这又是一个错误的示范,请勿模仿 使用动态组件实现保留状态的路由 <!DOCTYPE html> <html> <he ...

  8. 如何优雅的使用vue+vux开发app -01

    如何优雅的使用vue+vux开发app -01 很明显下面是个错误的示范: <!DOCTYPE html> <html> <head> <title>v ...

  9. vue 开发系列(三) vue 组件开发

    概要 vue 的一个特点是进行组件开发,组件的优势是我们可以封装自己的控件,实现重用,比如我们在平台中封装了自己的附件控件,输入控件等. 组件的开发 在vue 中一个组件,就是一个独立的.vue 文件 ...

随机推荐

  1. LVS负载均衡介绍

    LVS介绍 负载均衡器 • 链路负载均衡 (三层负载均衡) • 服务器负载均衡 (四层负载均衡) • 应用层负载均衡 (七层负载均衡) • 全局负载均衡 基本情况 • 实现服务器负载均衡 • 核心功能 ...

  2. IIS与Apache禁止IP地址直接访问网站

    一.IIS 防止恶意域名指向解决方法 首先单击"开始"-"设置"-"控制面板"-"管理工具",找到"Inter ...

  3. Java修改maven的默认jdk版本为1.7

    Java修改maven的默认jdk版本 问题: 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2.每次右键项目名-maven->update pro ...

  4. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(一)

    Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十分方便,便于指出过滤器的位置. ...

  5. Oracle的一些简单语句

    drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息, ...

  6. 洛谷 [P1198] 最大数

    首先这是一道线段树裸题,但是线段树长度不确定,那么我们可以在建树的时候,将每一个节点初始化为-INF,每次往队尾加一个元素即一次单节点更新,注意本题的数据范围,其实并不用开 long long,具体请 ...

  7. js 中的一些小技巧

    js 数字操作: 1.1 取整: 取整有很多方法如: parseInt(a,10); Math.floor(a); a>>0; ~~a; a|0; 前面2种是经常用到的,后面3中算是比较偏 ...

  8. python爬虫(6)——正则表达式(三)

    下面,我再写一个例子,加强对正则表达式的理解.还是回到我们下载的那个二手房网页,在实际中,我们并不需要整个网页的内容,因此我们来改进这个程序,对网页上的信息进行过滤筛选,并保存我们需要的内容.打开ch ...

  9. express respond.send 和 end的区别

    做个记录 res.send() will send the HTTP response. Its syntax is, res.send([body]) The body parameter can ...

  10. dedecms文章页调用上一篇和下一篇文章

    dedecms文章页调用上一篇和下一篇文章,解析后是链接形式的上下篇 {dede:prenext get='pre'/} {dede:prenext get='next'/}