[英]minify css/js into their individual files
I have this default gulp file from a Visual Studio template: 我有一个来自Visual Studio模板的默认gulp文件:
/// <binding BeforeBuild='clean, minPreBuild' />
"use strict";
var gulp = require("gulp"),
rimraf = require("rimraf"),
concat = require("gulp-concat"),
cssmin = require("gulp-cssmin"),
uglify = require("gulp-uglify");
var webroot = "./wwwroot/";
var paths = {
js: webroot + "js/**/*.js",
minJs: webroot + "js/**/*.min.js",
css: webroot + "css/**/*.css",
minCss: webroot + "css/**/*.min.css",
concatJsDest: webroot + "js/_site.min.js",
concatCssDest: webroot + "css/_site.min.css"
};
gulp.task("clean:js", function (cb) {
rimraf(paths.concatJsDest, cb);
});
gulp.task("clean:css", function (cb) {
rimraf(paths.concatCssDest, cb);
});
gulp.task("clean", ["clean:js", "clean:css"]);
gulp.task("min:js", function () {
return gulp.src([paths.js, "!" + paths.minJs], { base: "." })
.pipe(concat(paths.concatJsDest))
.pipe(uglify())
.pipe(gulp.dest("."));
});
gulp.task("min:css", function () {
return gulp.src([paths.css, "!" + paths.minCss])
.pipe(concat(paths.concatCssDest))
.pipe(cssmin())
.pipe(gulp.dest("."));
});
gulp.task("min", ["min:js", "min:css"]);
gulp.task("minPreBuild", ["min:js", "min:css"]);
The problem I'm having is one of my js files in the directory has a dependency on knockout, but I'm only using knockout on one of the pages on the site. 我遇到的问题是目录中的js文件之一依赖于剔除,但是我只在网站的页面之一上使用剔除。 I don't want to include knockout on my shared view, and the default bundling all files into a single file causes a JS error "ko is undefined" as one of the JS files is dependent on KO. 我不想在我的共享视图上包括删除功能,并且默认将所有文件捆绑到一个文件中会导致JS错误“ ko is undefined”,因为其中一个JS文件依赖于KO。
Is there a way that I can minify files individually, without concatting it into the main "site.min.css"? 有没有一种方法可以使我单独缩小文件,而又不将其压缩到主要的“ site.min.css”中?
First you need to exclude the Knockout file from your min:js
task. 首先,您需要从min:js
任务中排除Knockout文件。 Prepending a path with !
用!
开头 tells gulp to ignore that file: 告诉gulp忽略该文件:
gulp.task("min:js", function () {
return gulp.src([
paths.js,
"!" + paths.minJs,
"!js/path/to/knockout.js" // don't include knockout in _site.min.js
], { base: "." })
.pipe(concat(paths.concatJsDest))
.pipe(uglify())
.pipe(gulp.dest("."));
});
Then you need to create a new task min:knockout
that does nothing but minify your Knockout file. 然后,您需要创建一个新任务min:knockout
,该任务除了缩小您的Knockout文件外什么也不做。 You'll probably want the minified file to end with a .min.js
extension so you'll have to install the gulp-rename
plugin as well. 您可能希望缩小的文件以.min.js
扩展名结尾,因此您也必须安装.min.js
gulp-rename
插件。
var rename = require('gulp-rename');
gulp.task("min:knockout", function () {
return gulp.src("js/path/to/knockout.js", { base: "." })
.pipe(rename("js/_knockout.min.js"))
.pipe(uglify())
.pipe(gulp.dest("."));
});
Finally you need to make sure your new min:knockout
task is executed when running the min
and minPreBuild
tasks: 最后,您需要确保在运行min
和minPreBuild
任务时执行了新的min:knockout
任务:
gulp.task("min", ["min:js", "min:knockout", "min:css"]);
gulp.task("minPreBuild", ["min:js", "min:knockout", "min:css"]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.