Skip to content

Instantly share code, notes, and snippets.

@titanew
Last active August 29, 2015 14:04
Show Gist options
  • Save titanew/29f53f31b7b1f58e310f to your computer and use it in GitHub Desktop.
Save titanew/29f53f31b7b1f58e310f to your computer and use it in GitHub Desktop.
gulpfile.js
var gulp = require('gulp');
var coffee = require('gulp-coffee');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var cssmin = require('gulp-minify-css');
var sass = require('gulp-sass');
var clean = require('gulp-clean');
var cheerio = require('gulp-cheerio');
var srcPath = {
base: './**',
htmlFiles: './**.html',
partialDir: './_**/*.html',
cssFiles: './css/**',
jsFiles: './js/**',
imageFiles: './images/**',
coffeeDir: './coffee/**',
scssFiles: './scss/**'
}
var buildPath = {
base: '../build/',
demoDir: '../build/demo',
projectDir: '../build/project'
}
gulp.task('clean', function() {
gulp.src('../build/**')
.pipe(clean({
force: true
}))
})
gulp.task('coffee', function() {
gulp.src(srcPath.coffeeDir)
.pipe(coffee({
bare: true
}))
.pipe(gulp.dest('./js/'))
})
gulp.task('sass', function() {
gulp.src(srcPath.scssFiles)
.pipe(sass())
.pipe(gulp.dest('./css/'))
})
gulp.task('copy', function() {
gulp.src(srcPath.partialDir)
.pipe(cheerio({
run: function($) {
if ($('*[style]').length != 0) {
$('*[style]')
.filter(function() {
return /background-image/.test($(this).attr('style')) && $(this).css('background-image').test(/^url\(\"?http/)
}).css('background-image', function(k, v) {
return 'url(../project' + '/' + $(this).css('background-image').split('url(')[1]
})
}
}
}))
.pipe(gulp.dest(buildPath.demoDir))
gulp.src(srcPath.imageFiles)
.pipe(gulp.dest(buildPath.demoDir + '/images/'))
})
gulp.task('usemin', ['clean'], function() {
gulp.src(srcPath.htmlFiles)
.pipe(usemin({
css: [cssmin()]
}))
.pipe(gulp.dest(buildPath.demoDir))
})
gulp.task('watch', function() {
gulp.watch([srcPath.coffeeDir], ['coffee'])
gulp.watch([srcPath.scssFiles], ['sass'])
// gulp.watch([srcPath.htmlFiles], ['usemin'])
})
gulp.task('default', ['coffee', 'sass', 'watch']);
gulp.task('build', ['usemin', 'copy']);
gulp.task('dist', ['build'])
var gulp = require('gulp');
var coffee = require('gulp-coffee');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var cssmin = require('gulp-minify-css');
var sass = require('gulp-sass');
var clean = require('gulp-clean');
var cheerio = require('gulp-cheerio');
var srcPath = {
base: './**',
htmlFiles: './**.html',
partialDir: './_**/*.html',
cssFiles: './css/**',
jsFiles: './js/**',
imageFiles: './images/**',
coffeeDir: './coffee/**',
scssFiles: './scss/**'
}
var buildPath = {
base: '../build/',
demoDir: '../build/demo',
projectDir: '../build/project'
}
gulp.task('clean', function() {
gulp.src('../build/**')
.pipe(clean({
force: true
}))
})
gulp.task('coffee', function() {
gulp.src(srcPath.coffeeDir)
.pipe(coffee({
bare: true
}))
.pipe(gulp.dest('./js/'))
})
gulp.task('sass', function() {
gulp.src(srcPath.scssFiles)
.pipe(sass())
.pipe(gulp.dest('./css/'))
})
gulp.task('copy', function() {
gulp.src(srcPath.partialDir)
.pipe(cheerio({
run: function($) {
if ($('img[src^="images"]').length != 0) {
$('img[src^="images"]')
.filter(function() {
if (this.attr('src') != undefined) {
return !this.attr('src').match(/^http|https/)
};
})
.attr('src', function(k, v) {
if (v == undefined) {
return ''
};
return '../project/' + this.attr('src')
})
}
if ($('*[style]').length != 0) {
$('*[style]')
.filter(function() {
return /background-image/.test($(this).attr('style')) && $(this).css('background-image').test(/^url\(\"?http/)
}).css('background-image', function(k, v) {
return 'url(../project' + '/' + $(this).css('background-image').split('url(')[1]
})
}
}
}))
.pipe(gulp.dest(buildPath.demoDir))
gulp.src(srcPath.imageFiles)
.pipe(gulp.dest(buildPath.demoDir + '/images/'))
})
gulp.task('usemin', ['clean'], function() {
gulp.src(srcPath.htmlFiles)
.pipe(usemin({
css: [cssmin()]
}))
.pipe(gulp.dest(buildPath.demoDir))
})
gulp.task('watch', function() {
gulp.watch([srcPath.coffeeDir], ['coffee'])
gulp.watch([srcPath.scssFiles], ['sass'])
// gulp.watch([srcPath.htmlFiles], ['usemin'])
})
gulp.task('default', ['coffee', 'sass', 'watch']);
gulp.task('build', ['usemin', 'copy']);
gulp.task('dist', ['build'])
/**
* Created by 13082338 on 2014/8/1.
*/
var gulp = require('gulp');
var coffee = require('gulp-coffee');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var cssmin = require('gulp-minify-css');
var sass = require('gulp-sass');
var cheerio = require('gulp-cheerio');
var del = require('del');
var path = require('path');
var projectName = path.basename(path.resolve(__dirname, '../../../'));
var branchNo = path.basename(path.resolve(__dirname, '../'));
var srcPath = {
base: './**',
htmlFiles: ['./**.html', './_**/**', '!./node_modules/**'],
cssDir: './css/',
jsDir: './js/',
imageFiles: ['./images/**', './temp/**'],
coffeeFiles: './coffee/**',
scssFiles: './sass/**'
};
var buildPath = {
base: '../build/',
htmlFiles: ['../build/**.html', '../build/_**/**'],
assetFiles: ['{../build/css/,../build/css/**}', '../build/js/**','../build/images/**'],
tempFiles: ['../build/temp/**']
};
var distPath = {
base: '../../../../../codePub/' + projectName,
demoDir: '../../../../../codePub/' + projectName + '/' + branchNo + '/demo',
projectDir: '../../../../../codePub/' + projectName + '/' + branchNo + '/project'
}
gulp.task('clean', function (cb) {
del([buildPath.base], {force: true}, cb)
});
gulp.task('distClean', function (cb) {
del([distPath.base], {force: true}, cb)
})
gulp.task('coffee', function () {
gulp.src(srcPath.coffeeFiles)
.pipe(coffee({
bare: true
}))
.pipe(gulp.dest(srcPath.jsDir))
});
gulp.task('sass', function () {
gulp.src(srcPath.scssFiles)
.pipe(sass())
.pipe(gulp.dest(srcPath.cssDir))
});
gulp.task('move',['distClean'], function () {
// 复制html文件
gulp.src(buildPath.htmlFiles)
.pipe(cheerio({
run: function ($) {
if ($('img[src^="images"]').length != 0) {
$('img[src^="images"]')
.filter(function () {
if (this.attr('src') != undefined) {
return !this.attr('src').match(/^http|https/)
}
})
.attr('src', function (k, v) {
if (v == undefined) {
return ''
}
return '../project/' + this.attr('src')
})
}
if ($('*[style]').length != 0) {
$('*[style]')
.filter(function () {
return /background-image/.test($(this).attr('style')) && $(this).css('background-image').match(/^url\(\"?http/)
}).css('background-image', function (k, v) {
return 'url(../project' + '/' + $(this).css('background-image').split('url(')[1]
})
}
}
}))
.pipe(gulp.dest(distPath.demoDir))
gulp.src(buildPath.tempFiles,{base:''})
.pipe(gulp.dest(distPath.demoDir+'/temp'))
gulp.src(buildPath.assetFiles,{base:''})
.pipe(gulp.dest(distPath.projectDir))
});
gulp.task('imgCopy', ['clean'], function () {
gulp.src(srcPath.imageFiles, {base: './'})
.pipe(gulp.dest(buildPath.base))
})
gulp.task('usemin', ['clean'], function () {
gulp.src(srcPath.htmlFiles, {base: './'})
.pipe(usemin({
css: [cssmin()]
}))
.pipe(gulp.dest(buildPath.base))
});
gulp.task('watch', function () {
gulp.watch([srcPath.coffeeFiles], ['coffee']);
gulp.watch([srcPath.scssFiles], ['sass']);
});
gulp.task('default', ['coffee', 'sass', 'watch']);
gulp.task('build', ['usemin', 'imgCopy']);
gulp.task('dist', ['move']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment