vue-schedule-selector
Version:
this is a schedule selector for vue
178 lines (153 loc) • 4.97 kB
JavaScript
var pkg = require('./package.json');
var fs = require('fs');
var version = require('gulp-version-number');
var gulp = require('gulp');
var runSequence = require('run-sequence');
var uglify = require('gulp-uglify');
var minify = require('gulp-minify-css');
var rename = require('gulp-rename');
var header = require('gulp-header');
var del = require('del');
var concat = require('gulp-concat');
var bump = require('gulp-bump');
var git = require('gulp-git');
var nodeCmd = require('node-cmd');
function getPackageJsonVersion () {
// 这里我们直接解析 json 文件而不是使用 require,这是因为 require 会缓存多次调用,这会导致版本号不会被更新掉
return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version;
};
var task = {
layer: function() {
gulp.src(['./src/**/*.css']).pipe(minify({
compatibility: 'ie7',
})).pipe(gulp.dest('./dist'));
return gulp.src(['./src/layer.js','./src/xbim.js'])
.pipe(version({
'replaces' : [
[/#{VERSION_REPlACE}#/g, getPackageJsonVersion() ]
],
}))
.pipe(concat('xbim.js'))
.pipe(uglify({
compress: {
drop_console: true,
},
},
))
.pipe(header(
'/*! <%= pkg.realname %>-v<%= pkg.version %> <%= pkg.description %> <%= pkg.license %> License <%= pkg.homepage %> By <%= pkg.author %> */\n ;',
{pkg: JSON.parse(fs.readFileSync('./package.json', 'utf8'))}))
.pipe(gulp.dest('./dist'));
},
other: function() {
gulp.src('./src/**/*.{png,gif,wav}')
.pipe(rename({}))
.pipe(gulp.dest('./dist'));
},
};
gulp.task('clear', function(cb) { //清理
return del(['./dist/*'], cb);
});
gulp.task('layer', task.minjs); //压缩PC版本
// gulp.task('mobile', task.mincss); //压缩Mobile文件
gulp.task('other', task.other); //移动一些配件
//打包发行版
var releaseDir = './release/zip/layer-v' + pkg.version;
gulp.task('clearZip', function(cb) { //清理
return del(['./release/zip/*'], cb);
});
gulp.task('r', ['clearZip'], function() {
gulp.src('./release/doc/**/*')
.pipe(gulp.dest(releaseDir));
return gulp.src([
'./dist/**/*'
, '!./dist/**/moon'
, '!./dist/**/moon/*',
]).pipe(gulp.dest(releaseDir + '/layer'));
});
//全部
gulp.task('default', ['clear'], function() {
for (var key in task) {
task[key]();
}
});
gulp.task('update-patch', function () {
return gulp.src(['./package.json'])
.pipe(bump({type: "patch"}))
.pipe(gulp.dest('./'));
});
gulp.task('update-minor', function () {
return gulp.src(['./package.json'])
.pipe(bump({type: "minor"}))
.pipe(gulp.dest('./'));
});
gulp.task('update-major', function () {
return gulp.src(['./package.json'])
.pipe(bump({type: "major"}))
.pipe(gulp.dest('./'));
});
gulp.task('commit-changes', function () {
return gulp.src('.')
.pipe(git.add({args: '-A'}))
.pipe(git.commit(`[Prerelease] Bumped version number: ${getPackageJsonVersion()}`))
.pipe(gulp.dest('./'))
});
gulp.task('create-new-tag', function (cb) {
// var version = getPackageJsonVersion();
// git.tag(pkg.version, 'Created Tag for version: ' + version, function (error) {
git.tag(getPackageJsonVersion(), `Created Tag for version: ${getPackageJsonVersion()}`, function (error) {
if (error) {
return cb(error);
}
git.push('origin', 'master', {args: '--tags'}, cb);
});
});
gulp.task('build-bundle', function () {
nodeCmd.get(
'npm run build-bundle',
function(err, data){
console.log('build-bundle success', data)
}
);
});
gulp.task('publish', function () {
nodeCmd.get(
'npm publish',
function(err, data){
console.log('publish success', data)
}
);
});
gulp.task('master-publish-patch', function (callback) {
runSequence(
'update-patch',
// 'default',
'build-bundle',
'commit-changes',
'create-new-tag',
'publish',
function (error) {
if (error) {
console.log(error.message);
} else {
console.log('RELEASE FINISHED SUCCESSFULLY');
}
callback(error);
});
});
gulp.task('master-publish-minor', function (callback) {
runSequence(
'update-minor',
'default',
'commit-changes',
'create-new-tag',
'publish',
function (error) {
if (error) {
console.log(error.message);
} else {
console.log('RELEASE FINISHED SUCCESSFULLY');
}
callback(error);
});
});