gulpfile.js 4.46 KB
Newer Older
fangxinjiang's avatar
fangxinjiang committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
const gulp = require('gulp');
const plugins = require('gulp-load-plugins')();
const open = require('open');
const app = {
  srcPath: 'app/', // 源代码
  devPath: 'tmp/', // 开发打包
  prdPath: 'dist/' // 生产打包
};

const JS_LIBS = [
  'node_modules/angular-ui-router/release/angular-ui-router.js',
  'node_modules/oclazyload/dist/ocLazyLoad.min.js',
  'node_modules/angular-loading-bar/build/loading-bar.min.js',
  'node_modules/angular-bootstrap/ui-bootstrap-tpls.min.js',
  'node_modules/moment/moment.js',
  'node_modules/angular-date-time-input/src/dateTimeInput.js',
  'node_modules/angularjs-bootstrap-datetimepicker/src/js/datetimepicker.js',
  'node_modules/angular-table-resize/dist/angular-table-resize.min.js',
  'node_modules/angular-clipboard/angular-clipboard.js',
  'node_modules/selectize/dist/js/standalone/selectize.js',
  'node_modules/angular-selectize2/dist/selectize.js',
  'node_modules/bootstrap-switch/dist/js/bootstrap-switch.min.js',
  'node_modules/ng-dialog/js/ngDialog.js',
  'node_modules/angular-ui-notification/dist/angular-ui-notification.min.js',
  'node_modules/angular-utils-pagination/dirPagination.js',
  'app/scripts/libs/treeTable.js',
];

const CSS_APP = [
  'node_modules/angular-loading-bar/build/loading-bar.min.css',
  'node_modules/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css',
  'node_modules/ng-dialog/css/ngDialog.min.css',
  'node_modules/ng-dialog/css/ngDialog-theme-default.css',
  'node_modules/angularjs-bootstrap-datetimepicker/src/css/datetimepicker.css',
  'node_modules/angular-ui-notification/dist/angular-ui-notification.min.css',
  'node_modules/angular-table-resize/dist/angular-table-resize.css',
  'node_modules/selectize/dist/css/selectize.css',
  'app/styles/page.css',
  'app/styles/timeline.css',
  'app/styles/main.css'
];

const JS_APP = [
  'app/scripts/app.js',
  'app/scripts/filters/filters.js',
  'app/scripts/services/version_service.js',
  'app/scripts/services/auth_service.js',
  'app/scripts/services/appservice.js',
  'app/scripts/services/flow_service_v1.js',
  'app/scripts/services/flow_service_v2.js',
  'app/scripts/services/degrade_service.js',
  'app/scripts/services/systemservice.js',
  'app/scripts/services/machineservice.js',
  'app/scripts/services/identityservice.js',
  'app/scripts/services/metricservice.js',
  'app/scripts/services/param_flow_service.js',
  'app/scripts/services/authority_service.js',
  'app/scripts/services/cluster_state_service.js',
  'app/scripts/services/gateway/api_service.js',
  'app/scripts/services/gateway/flow_service.js',
];

gulp.task('lib', function () {
  gulp.src(JS_LIBS)
    .pipe(plugins.concat('app.vendor.js'))
    .pipe(gulp.dest(app.devPath + 'js'))
    .pipe(plugins.uglify())
    .pipe(gulp.dest(app.prdPath + 'js'))
    .pipe(plugins.connect.reload());
});

/*
* css任务
* 在src下创建style文件夹,里面存放less文件。 
*/
gulp.task('css', function () {
  gulp.src(CSS_APP)
    .pipe(plugins.concat('app.css'))
    .pipe(gulp.dest(app.devPath + 'css'))
    .pipe(plugins.cssmin())
    .pipe(gulp.dest(app.prdPath + 'css'))
    .pipe(plugins.connect.reload());
});

/*
* js任务
* 在src目录下创建script文件夹,里面存放所有的js文件
*/
gulp.task('js', function () {
  gulp.src(JS_APP)
    .pipe(plugins.concat('app.js'))
    .pipe(gulp.dest(app.devPath + 'js'))
    .pipe(plugins.uglify())
    .pipe(gulp.dest(app.prdPath + 'js'))
    .pipe(plugins.connect.reload());
});

/*
* js任务
* 在src目录下创建script文件夹,里面存放所有的js文件
*/
gulp.task('jshint', function () {
  gulp.src(JS_APP)
    .pipe(plugins.jshint())
    .pipe(plugins.jshint.reporter());
});

// 每次发布的时候,可能需要把之前目录内的内容清除,避免旧的文件对新的容有所影响。 需要在每次发布前删除dist和build目录
gulp.task('clean', function () {
  gulp.src([app.devPath, app.prdPath])
    .pipe(plugins.clean());
});

// 总任务
gulp.task('build', ['clean', 'jshint', 'lib', 'js', 'css']);

// 服务
gulp.task('serve', ['build'], function () {
  plugins.connect.server({ //启动一个服务器
    root: [app.devPath], // 服务器从哪个路径开始读取,默认从开发路径读取
    livereload: true, // 自动刷新
    port: 1234
  });
  // 打开浏览器
  setTimeout(() => {
    open('http://localhost:8080/index_dev.htm')
  }, 200);
  // 监听
  gulp.watch(app.srcPath + '**/*.js', ['js']);
  gulp.watch(app.srcPath + '**/*.css', ['css']);
});

// 定义default任务
gulp.task('default', ['serve']);