From e97c468f6e373e03e3a81b8c466183ae122b12b0 Mon Sep 17 00:00:00 2001 From: lealife Date: Sun, 22 Nov 2015 22:39:16 +0800 Subject: [PATCH] gulp markdown v2 builder --- Gulpfile.js | 129 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 37 deletions(-) diff --git a/Gulpfile.js b/Gulpfile.js index 118f7e3..0e12ba1 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -62,6 +62,34 @@ gulp.task('concatAppJs', function() { .pipe(gulp.dest(base + '/js')); }); +// plugins压缩 +gulp.task('plugins', function() { + gulp.src(base + '/js/plugins/libs/*.js') + .pipe(uglify()) // 压缩 + // .pipe(concat('main.min.js')) + .pipe(gulp.dest(base + '/js/plugins/libs-min')); + + + // 所有js合并成一个 + var jss = [ + 'note_info', + 'tips', + 'history', + 'attachment_upload', + 'editor_drop_paste', + 'main' + ]; + + for(var i in jss) { + jss[i] = base + '/js/plugins/' + jss[i] + '.js'; + } + + gulp.src(jss) + .pipe(uglify()) // 压缩 + .pipe(concat('main.min.js')) + .pipe(gulp.dest(base + '/js/plugins')); +}); + // 合并requirejs和markdown为一个文件 gulp.task('concatMarkdownJs', function() { var jss = [ @@ -80,6 +108,24 @@ gulp.task('concatMarkdownJs', function() { .pipe(gulp.dest(base + '/js')); }); +// / 合并requirejs和markdown为一个文件 +gulp.task('concatMarkdownJsV2', function() { + var jss = [ + 'js/require.js', + 'dist/main-v2.min.js', + ]; + + for(var i in jss) { + jss[i] = base + '/' + jss[i]; + } + + return gulp + .src(jss) + .pipe(uglify()) // 压缩 + .pipe(concat('markdown-v2.min.js')) + .pipe(gulp.dest(base + '/js')); +}); + // note-dev.html -> note.html, 替换css, js // TODO 加?t=2323232, 强制浏览器更新, 一般只需要把app.min.js上加 gulp.task('devToProHtml', function() { @@ -88,7 +134,8 @@ gulp.task('devToProHtml', function() { .pipe(replace(/[.\s\S]+?/g, '')) // 把dev 去掉 .pipe(replace(//, '')) // 替换 .pipe(replace(//, '')) // 替换 - .pipe(replace(//, '')) // 替换 + // .pipe(replace(//, '')) // 替换 + .pipe(replace(//, '')) // 替换 .pipe(replace(//, "var tinyMCEPreInit = {base: '/public/tinymce', suffix: '.min'};")) // 替换 .pipe(replace(/plugins\/main.js/, "plugins/main.min.js")) // 替换 // 连续两个空行换成一个空行, 没用 @@ -106,10 +153,16 @@ var path = require('path'); gulp.task('i18n', function() { var keys = {}; var reg = /getMsg\(["']+(.+?)["']+/g; + // {rule: "required", msg: "inputNewPassword"}, + var reg2 = /msg: ?"?([0-9a-zA-Z]*)"?/g; function getKey(data) { while(ret = reg.exec(data)) { keys[ret[1]] = 1; } + + while(ret2 = reg2.exec(data)) { + keys[ret2[1]] = 1; + } } // 先获取需要的key function ls(ff) { @@ -144,6 +197,8 @@ gulp.task('i18n', function() { ls(base + '/member'); ls(base + '/tinymce'); + ls(leanoteBase + '/app/views'); + console.log('parsed'); // msg.zh @@ -202,7 +257,6 @@ gulp.task('i18n', function() { genI18nJsFile('blog.fr', keys); }); - // 合并album需要的js gulp.task('concatAlbumJs', function() { /* @@ -265,6 +319,41 @@ gulp.task('plugins', function() { }); +// tinymce +// please set the right path on your own env +var tinymceBase = '/Users/life/leanote/leanote-tools/tinymce_4.1.9_leanote_public'; +gulp.task('tinymce', function() { + // 先清理 + fs.unlink(tinymceBase + '/js/tinymce/tinymce.dev.js'); + fs.unlink(tinymceBase + '/js/tinymce/tinymce.jquery.dev.js'); + fs.unlink(tinymceBase + '/js/tinymce/tinymce.full.js'); + fs.unlink(tinymceBase + '/js/tinymce/tinymce.full.min.js'); + + var cp = require('child_process'); + + var bundleCmd = 'grunt bundle --themes leanote --plugins autolink,link,leaui_image,lists,hr,paste,searchreplace,leanote_nav,leanote_code,tabfocus,table,directionality,textcolor'; + // build + cp.exec('grunt minify', {cwd: tinymceBase}, function(err, stdout, stderr) { + console.log('stdout: ' + stdout); + console.log('stderr: ' + stderr); + + // 将所有都合并成一起 + cp.exec(bundleCmd, {cwd: tinymceBase}, function(err, stdout, stderr) { + console.log('stdout: ' + stdout); + console.log('stderr: ' + stderr); + }); + }); +}); + +// 合并css, 无用 +// Deprecated +gulp.task('concatCss', function() { + return gulp + .src([markdownRaw + '/css/default.css', markdownRaw + '/css/md.css']) + .pipe(concat('all.css')) + .pipe(gulp.dest(markdownMin)); +}); + // mincss var minifycss = require('gulp-minify-css'); gulp.task('minifycss', function() { @@ -305,41 +394,7 @@ gulp.task('minifycss', function() { */ }); -// tinymce -// please set the right path on your own env -var tinymceBase = '/Users/life/leanote/leanote-tools/tinymce_4.1.9_leanote_public'; -gulp.task('tinymce', function() { - // 先清理 - fs.unlink(tinymceBase + '/js/tinymce/tinymce.dev.js'); - fs.unlink(tinymceBase + '/js/tinymce/tinymce.jquery.dev.js'); - fs.unlink(tinymceBase + '/js/tinymce/tinymce.full.js'); - fs.unlink(tinymceBase + '/js/tinymce/tinymce.full.min.js'); - var cp = require('child_process'); - - var bundleCmd = 'grunt bundle --themes leanote --plugins autolink,link,leaui_image,lists,hr,paste,searchreplace,leanote_nav,leanote_code,tabfocus,table,directionality,textcolor'; - // build - cp.exec('grunt minify', {cwd: tinymceBase}, function(err, stdout, stderr) { - console.log('stdout: ' + stdout); - console.log('stderr: ' + stderr); - - // 将所有都合并成一起 - cp.exec(bundleCmd, {cwd: tinymceBase}, function(err, stdout, stderr) { - console.log('stdout: ' + stdout); - console.log('stderr: ' + stderr); - }); - }); -}); - -// 合并css, 无用 -// Deprecated -gulp.task('concatCss', function() { - return gulp - .src([markdownRaw + '/css/default.css', markdownRaw + '/css/md.css']) - .pipe(concat('all.css')) - .pipe(gulp.dest(markdownMin)); -}); - -gulp.task('concat', ['concatDepJs', 'concatAppJs', 'concatMarkdownJs']); +gulp.task('concat', ['concatDepJs', 'concatAppJs', /* 'concatMarkdownJs', */'concatMarkdownJsV2']); gulp.task('html', ['devToProHtml']); gulp.task('default', ['concat', 'plugins', 'minifycss', 'i18n', 'concatAlbumJs', 'html']);