gulp.task('css', function() { //编译CSS//压缩CSS gulp.src('./src/sass/*.scss') //编译sass .pipe(compass({ config_file: './config.rb', css: './dist/css/', sass: './src/sass/' })) .pipe(mincss()) .pipe(rev()) //- 文件名加MD5后缀 .pipe(gulp.dest('./dist/css'))//输出到文件夹 .pipe(rev.manifest()) .pipe( gulp.dest('dist/rev/css')); });
gulp.task('mincss',function() { return gulp.src(cssRevSrc) .pipe(autoprefixer({ browsers: ['last 2 versions', 'Android >= 4.0','> 5%'], cascade: true, //是否美化属性值 默认:true 像这样: remove:true //是否去掉不必要的前缀 默认:true })) .pipe(minifyCSS({compatibility: 'ie8'})) //.pipe(rename({ suffix: '.min' })) .pipe(rev()) .pipe(gulp.dest(cssDest)) .pipe(rev.manifest()) .pipe(gulp.dest('src/rev/css')); });
gulp.task("build", function () { gulp.src('src/**/*.png').pipe(gulp.dest(outPath)); gulp.src('src/**/*.gif').pipe(gulp.dest(outPath)); gulp.src('src/**/*.tff').pipe(gulp.dest(outPath)); gulp.src('src/app/**/*.*').pipe(gulp.dest(outPath + "app/")); gulp.src(['src/assets/**/*.js']) .pipe(sourcemaps.init()) .pipe(uglify().on('error', gutil.log)) .pipe(rev()) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest(outPath + "assets/")) .pipe(rev.manifest()) .pipe(gulp.dest('rev/js')); gulp.src('src/assets/**/*.css') .pipe(sourcemaps.init()) .pipe(rev()) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest(outPath + "assets/")) .pipe(rev.manifest()) .pipe(gulp.dest("rev/css")); });
function deployJS() { CONFIG.server.remotePath = CONFIG.paths.production.assets; let js = buildJS(); let production = buildProductionJS(js) .pipe(closure()) .pipe(rev()) .pipe(sftp({ host: CONFIG.server.host, remotePath: CONFIG.server.remotePath, auth: "laguinho" })) .pipe(rev.manifest({ merge: true })) .pipe(gulp.dest(CONFIG.paths.development.repo, { mode: "0644" })); util.log(util.colors.yellow("JS !!")); }
gulp.task('revision', () => { let filterServiceWorker = filter([ `${PATHS.tempFolder}/**/*.*`, `!${PATHS.tempFolder}/service-worker.js` ], { restore: true }); return gulp.src(`${PATHS.tempFolder}/**/*.*`) .pipe(filterServiceWorker) .pipe(rev()) .pipe(gulp.dest(PATHS.distFolder)) .pipe(rev.manifest()) .pipe(filterServiceWorker.restore) .pipe(gulp.dest(PATHS.distFolder)); });
gulp.task('compass', function() { return gulp.src('app/css/*.scss') .pipe(compass({ config_file: './config.rb', css: 'app/stylesheets', sass: 'app/sass' })) .pipe(concat('index.min.css')) .pipe(minifyCss()) .pipe(rev()) .pipe(gulp.dest('build/stylesheets')) .pipe(rev.manifest()) .pipe(gulp.dest('build/rev/sass')); });
gulp.task('images', function () { return gulp.src(config.app + 'content/images/**') .pipe(plumber({errorHandler: handleErrors})) .pipe(changed(config.dist + 'content/images')) .pipe(imagemin({optimizationLevel: 5, progressive: true, interlaced: true})) .pipe(rev()) .pipe(gulp.dest(config.dist + 'content/images')) .pipe(rev.manifest(config.revManifest, { base: config.dist, merge: true })) .pipe(gulp.dest(config.dist)) .pipe(browserSync.reload({stream: true})); });
gulp.task('js:build', function () { gulp.src(path.src.js) .pipe(rigger()) .pipe(gulpIf(dev, (sourceMaps.init()))) .pipe(gulpIf(prod, uglify())) .pipe(rev()) .pipe(gulpIf(dev, (sourceMaps.write()))) .pipe(gulp.dest(path.build.js)) .pipe(rev.manifest({ merge: true })) .pipe(gulp.dest(path.build.js)) .pipe(reload({stream: true})); });
gulp.task('minify', ['sass'], function() { return gulp.src('./prod/css/*.css') .pipe(cleanCSS({ compatibility: '*' })) .pipe(gulp.dest('./dist/css')) .pipe(rev()) .pipe(gulp.dest('./dist/css')) .pipe(rev.manifest('./dist/rev-manifest.json', { base: './dist', merge: true })) .pipe(gulp.dest('./dist')); });
gulp.task('rev', () => { return gulp.src([ 'public/styles/**/*.css', 'public/scripts/**/*.js', 'public/images/**/*.{png,svg,gif,jpg}' ], {base: 'assets'}) .pipe(gulp.dest('public')) // copy original assets to build dir .pipe(rev()) .pipe(revReplace({replaceInExtensions: ['.css']})) .pipe(revNapkin({verbose:false})) .pipe(gulp.dest('public')) // write rev'd assets to build dir .pipe(rev.manifest()) .pipe(gulp.dest('public')); // write manifest to build dir });
gulp.task('html', function () { return gulp.src([HTML_SRCPATH, '/**/*.{html,shtml}'].join('')) .pipe(rev()) .pipe(revFormat({ prefix: '-', suffix: '', lastExt: true })) .pipe(gulp.dest(HTML_DISTPATH)) .pipe(rev.manifest('rev-manifest-html.json')) .pipe(filename({bundleName: BUILD_CONFIG.bundleName + '.html'})) .pipe(revDel({dest: HTML_DISTPATH})) .pipe(gulp.dest(BASEPATH_V + '/rev/pages')) });
gulp.task('css', function(){ return gulp.src( src_path + "/css/page/*.css" ) .pipe(fileconcat({ relativeUrls: './' })) .pipe(minifycss()) // .pipe(rename({ // suffix: ".min" // })) .pipe(rev()) .pipe(gulp.dest( dest_path + '/css/page/' )) .pipe(rev.manifest()) .pipe(gulp.dest( src_path + '/rev/css' )); });
gulp.task ('myrev', ['copy_src','prod_cfg','css','rjs','jekyll'], function(){ return gulp.src([paths.prod + 'site/scripts/amd-app.js', paths.prod + 'site/styles/*.css'],{base:paths.prod}) //.pipe(wait(1500)) .pipe(rev()) .pipe(print(function(filepath) { return "rev -> built: " + filepath; })) .pipe(gulp.dest(paths.prod)) .pipe(rev.manifest()) .pipe(print(function(filepath) { return "manifest -> built: " + filepath; })) .pipe(gulp.dest(paths.prod)); });
gulp.task('build-scss', ['lint-scss'], function() { return gulp.src(srcScss) .pipe(expect(srcScss)) .pipe(sourcemaps.init()) .pipe(sass()) .pipe(concat('app.css')) .pipe(production(minify())) .pipe(rev()) .pipe(sourcemaps.write('.')) .pipe(connect.reload()) .pipe(gulp.dest('dist/css')) .pipe(rev.manifest({ merge:true })) .pipe(gulp.dest('./')); });
gulp.task('images', function () { return gulp.src('detail/images/*.{png,jpg,gif,svg}') // 指明源文件路径、并进行文件匹配 .pipe(imagemin({ progressive: true, // 无损压缩JPG图片 svgoPlugins: [{ removeViewBox: false }], // 不移除svg的viewbox属性 use: [pngquant()] // 使用pngquant插件进行深度压缩 })) .pipe(rev()) .pipe(gulp.dest('dist/images')) // 输出路径 .pipe(rev.manifest()) //- 生成一个rev-manifest.json .pipe(gulp.dest('rev/img')); //- 将 rev-manifest.json 保存到 rev 目录内 });
gulp.task('css', ['img'], function() { var manifest = gulp.src(distPath + "img/rev-manifest.json"); return gulp.src([ srcPath + 'css/**/*.css', '!' + srcPath + 'css/**/_*.css' ]) .pipe(changed(changedOpt)) .pipe(csso()) .pipe(revReplace({manifest: manifest})) .pipe(rev()) .pipe(gulp.dest(distPath + 'css')) .pipe(rev.manifest(revOpt)) .pipe(gulp.dest(distPath + 'css')); });
gulp.task('p-css', function() { return gulp.src(devUrl+'/css/**') .pipe(concat('main.css')) .pipe(minifycss()) .pipe(rev()) .pipe(gulp.dest(productUrl+'/css')) .pipe(rev.manifest( { base: devUrl, merge: true // 合并现有的json } )) .pipe(gulp.dest(devUrl)); });
gulp.task ('rev-se', ['copy_src','css_onprem_se','rjs_se','jekyll_onprem_se','onprem_copy_templates'], function(){ return gulp.src([paths.onpremSE + 'site/scripts/amd-app.js', paths.onpremSE + 'site/styles/*.css'],{base:paths.onpremSE}) //.pipe(wait(1500)) .pipe(rev()) .pipe(print(function(filepath) { return "rev -> built: " + filepath; })) .pipe(gulp.dest(paths.onpremSE)) .pipe(rev.manifest()) .pipe(print(function(filepath) { return "manifest -> built: " + filepath; })) .pipe(gulp.dest(paths.onpremSE)); });
gulp.task('image', function () { return gulp.src(imgSrc) .pipe(imagemin({ progressive: true, svgoPlugins: [{ removeViewBox: false }], use: [pngquant()] })) .pipe(rev()) .pipe(gulp.dest(imgDest)) .pipe(rev.manifest()) .pipe(gulp.dest('src/rev/img')); //dest()写入文件 });
gulp.task('release-rev', ['release-js'], function () { return gulp.src([ config.build.path + '/css/**/*.css', config.build.path + '/js/**/*.js', config.build.path + '/img/**/*.+(png|gif|jpg|eot|woff|ttf|svg|ico)' ], { base: config.build.path }) .pipe(gulp.dest(config.dist.path)) .pipe(rev()) .pipe(gulp.dest(config.dist.path)) .pipe(rev.manifest()) .pipe(gulp.dest(config.dist.asset)) })
return function () { return gulp.src(options.src) .pipe(sass({ indentedSyntax: true }).on('error', sass.logError)) .pipe(rename(options.fileName)) .pipe(gulpif(options.production, rev())) .pipe(gulp.dest(options.dest)) .pipe(gulpif(options.production, rev.manifest(options.dest + '/rev-manifest.json', { base: options.dest, merge: true }))) .pipe(gulpif(options.production, gulp.dest(options.dest))); };
gulp.task('styles:app', function() { log('Building application styles..'); return gulp.src(source.styles.app) .pipe( $.if( useSourceMaps, $.sourcemaps.init() )) .pipe( $.less() ) .on('error', handleError) .pipe( $.if( isProduction, $.minifyCss() )) .pipe( $.if( useSourceMaps, $.sourcemaps.write() )) .pipe($.if(isProduction,$.rev())) .pipe(gulp.dest(build.styles)) .pipe($.if(isProduction,rev.manifest())) .pipe($.if(isProduction,gulp.dest(build.styles))) ; });
gulp.task('js', function () { return gulp.src(jsSrc) //可配置你需要检查脚本的具体名字。 // .pipe(jshint()) // .pipe(jshint.reporter('default')) .pipe(concat('all.js')) .pipe(rename({ suffix: ".min" })) .pipe(uglify()) .pipe(rev()) .pipe(gulp.dest(jsDest)) .pipe(rev.manifest()) .pipe(gulp.dest('src/rev/js')) .pipe(browserSync.stream()); });
gulp.task('sass', function () { return gulp.src(STYLES_SRCPATH + '/sass/**/*.scss') .pipe(sass({outputStyle: 'compressed', errLogToConsole: true}).on('error', sass.logError)) .pipe(rev()) .pipe(revFormat({ prefix: '-', suffix: '', lastExt: true })) .pipe(gulp.dest(STYLES_DISTPATH)) .pipe(rev.manifest('rev-manifest-sass.json')) .pipe(filename({bundleName: BUILD_CONFIG.bundleName + '.sass'})) // .pipe(gulp.dest(STYLES_DISTPATH)); .pipe(gulp.dest(BASEPATH_V + '/rev/styles/css')) });
gulp.task('js',['css'],function(){ gulp.src(['./js/*.js']) .pipe(jshint()) .pipe(jshint.reporter('default')) .pipe(uglify()) .pipe(rev()) .pipe(gulp.dest('build/js')) .pipe(rev.manifest()) .pipe(gulp.dest('build/rev/js')); return gulp.src(['./lib/*.js']) .pipe(uglify()) .pipe(gulp.dest('build/lib')) .pipe(notify({ message: 'js task complete' })); });
gulp.task("js", function() { //過去リビジョンファイル削除 del(['webroot/js/rev/*']); gulp.src(["webroot/js/*.js"]) .pipe(plumber()) .pipe(changed("webroot/js/rev")) .pipe(uglify()) .pipe(rev()) .pipe(gulp.dest("webroot/js/rev")) .pipe(rev.manifest({ merge: true })) .pipe(gulp.dest("")) .pipe(browser.reload({stream:true})); });
gulp.task('less', function() { gulp.src(buildcss + '/*.css') .pipe(clean({force: true})); gulp.src('./app/client/less/*.less') .pipe(less()) .pipe(gulp.dest(buildcss)) .pipe(minifyCSS()) .pipe(buffer()) .pipe(rev()) .pipe(gulp.dest(buildcss)) .pipe(rev.manifest()) .pipe(rename('css-manifest.json')) .pipe(gulp.dest(buildcss)); });
gulp.task('reset', function () { return gulp.src([DISTPATH + '/main.js']) .pipe(uglify({ mangle: {except: ['define', 'require', 'module', 'exports']}, compress: false, preserveComments: 'some' })) .pipe(rev()) .pipe(gulp.dest(DISTPATH)) .pipe(rev.manifest("rev-manifest-scripts-main.json", {merge: true, cwd: ''})) .pipe(revDel({dest: DISTPATH})) .pipe(clean()) .pipe(gulp.dest(BASEPATH_V + '/rev/js')) });
function revisionHash () { return gulp.src([ // revision files matching these patterns `${workingDir}/**/*.{css,css.map,js,js.map}`, `${workingDir}/**/*.{gif,ico,jpg,png,svg,webp}`, `${workingDir}/**/*.{woff,woff2}`, ]) .pipe(filter(file => !revPattern.test(file.path))) // prevent files from being revisioned twice .pipe(filter(file => !file.path.endsWith('/sw.js'))) // service workers must always be unrevisioned .pipe(rev()) // revision matching files .pipe(override()) // update references in revisioned files .pipe(revDel()) // remove original files .pipe(gulp.dest(workingDir)) // save revisioned files .pipe(rev.manifest(manifestFilename)) // create a revision manifest .pipe(gulp.dest(workingDir)) // save the manifest }
gulp.task('js', function () { return gulp.src('./src/js/*.js') .pipe(sourceMaps.init()) .pipe(jshint()) .pipe(jshint.reporter('default')) .pipe(concat('all.min.js')) .pipe(uglify()) //压缩js文件 .pipe(rev()) .pipe(gulp.dest('./dist/js')) .pipe(rename('all.debug.js')) .pipe(sourceMaps.write()) .pipe(gulp.dest('./dist/js')) .pipe(rev.manifest()) .pipe(gulp.dest('./rev/js')) });