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

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

上一章我们简单地整合了一个gulp任务,但是略显混乱,在任务多,而且任务互相调用的情况下容易出问题。

我们优化的思路是,写一个对象,列出所有任务,如果一个任务需要调用多个子任务,那也为它写一个任务,然后用run-sequence来执行(比如下面的'run.android'),它会顺序执行任务。

所以首先我们安装run-sequence

npm install run-sequence --save-dev

然后我们修改gulpfile.js

'use strict'

require('./build/check-versions')();

const shelljs = require('shelljs');

const gulp = require('gulp');
const clean = require('gulp-clean'); process.env.NODE_ENV = 'production'; const ora = require('ora');
const rm = require('rimraf');
const path = require('path');
const chalk = require('chalk');
const webpack = require('webpack');
const config = require(process.cwd() + '/config');
const webpackConfig = require(process.cwd() + '/build/webpack.prod.conf'); const minimist = require('minimist');
const gutil = require('gulp-util');
const src = process.cwd() + '/src';
const assets = process.cwd() + '/dist'; const runSequence = require('run-sequence'); const tasks = {
//清空dist文件夹
'clean.dist': () => {
return gulp
.src('cordova/**/*')
.pipe(gulp.dest('dist'));
},
//复制cordova文件夹到dist文件夹
'copy.cordova': () => {
return gulp
.src('cordova/**/*')
.pipe(gulp.dest('dist'));
},
'webpack.build': (done) => {
let spinner = ora('正在打包,请稍后...');
spinner.start();
webpack(webpackConfig, (err, stats) => {
spinner.stop();
if (err) throw err;
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n'); if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'));
process.exit(1);
} console.log(chalk.cyan(' Build complete.\n'));
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
)) //↑↑↑上面的都是build.js文件里的内容
console.info('开始打包APP,请稍后...');
shelljs.cd('./dist');
shelljs.exec('cordova run android');
shelljs.cd(__dirname);
done();
}) },
'run.android': () => {
runSequence(
'clean.dist',
'copy.cordova',
'webpack.build'
)
}
}; //将任务添加到gulp中
for (let name in tasks) {
gulp.task(name, tasks[name]);
}

然后我们调用gulp run.android,就跟上一章的gulp pack一样了~

下一章我们把常用的几个任务都完善进去。

最新文章

  1. C++: Perfect Forwarding
  2. 前端面试那些坑之HTML篇
  3. eclipse中的web项目路径和发布好的项目路径
  4. 【转发】linux yum命令详解
  5. 20141113--SQL 事务
  6. 练习-libev和pyev示例
  7. java中的hashtable
  8. python:字符串取值
  9. CSS3 中的按钮效果与进度条
  10. 修改Windows系统的启动Shell
  11. EntityFramework 简单入个门
  12. jquery选择器 看这个链接吧!2017.6.2
  13. eclipse弃坑记第一篇之在idea上配置Tomcat环境并创建Javaweb项目的详细步骤原创
  14. 定时调度系列之Quartz.Net详解(转)
  15. 「SCOI2011」糖果
  16. Linux 下smi/mdio总线通信
  17. c# 模拟POST上传文件到服务器
  18. python mysql connector
  19. 使用 ahk 让普通键盘变为Dvorak键盘
  20. hdu5293 Tree chain problem 树形dp+线段树

热门文章

  1. nodejs爬虫笔记(四)---利用nightmare解决加载更多问题
  2. struts2.xml的配置问题
  3. vue调试神器vue-devtools安装
  4. 谈一谈jQuery核心架构设计(转)
  5. 华为交换机boot默认密码
  6. spring实例化bean三种方式
  7. 史上最全的JFinal源码分析(不间断更新)
  8. 如何设置select和option的文字居中?
  9. iOS-xcode代码统计
  10. Spring源码情操陶冶-AnnotationConfigBeanDefinitionParser注解配置解析器