Теперь, когда Bower
не работает с ASP.Net Core 2.0, мне нужно найти столь же эффективный способ минимизации / внедрения моих зависимостей из npm.
Я установил gulp
и, используя npm
, обновляю все свои зависимости в папку node_modules
в корне моего проекта. Следующим шагом будет получение всех зависимостей, перечисленных в моем файле package.json
, для вставки в папку wwwroot
моего проекта.
Я шел по учебному пособию Шона Вильдермута: https://wildermuth.com/2017/11/19/ASP-NET-Core-2-0-and-the-End-of-Bower и его " Лучшее решение " требует, чтобы каталоги зависимостей были перечислены в файле Gulp
:
// Dependency Dirs
var deps = {
"jquery": {
"dist/*": ""
},
"bootstrap": {
"dist/**/*": ""
},
};
Затем создайте задачу, чтобы перебрать следующие каталоги:
gulp.task("scripts", function () {
var streams = [];
for (var prop in deps) {
console.log("Prepping Scripts for: " + prop);
for (var itemProp in deps[prop]) {
streams.push(gulp.src("node_modules/" + prop + "/" + itemProp)
.pipe(gulp.dest("wwwroot/vendor/" + prop + "/" + deps[prop][itemProp])));
}
}
return merge(streams);
});
Можно ли это сделать без перечисления всех каталогов зависимостей в файле Gulp
? И вместо этого отсканируйте файл package.json
, чтобы перенести определенные файлы из папки node_modules
в wwwroot
Вот мой package.json
:
{
"version": "1.0.0",
"name": "asp.net",
"dependencies": {
"jquery": "3.3.1",
"bootstrap": "4.1.1"
},
"devDependencies": {
"gulp": "3.9.1",
"gulp-concat": "2.6.1",
"gulp-cssmin": "0.1.7",
"gulp-uglify": "2.0.1",
"rimraf": "2.6.1"
}
}
А вот и остальные мои gulpfile.js
:
/// <binding BeforeBuild='clean, min, scripts' Clean='clean' />
"use strict";
var gulp = require("gulp"),
rimraf = require("rimraf"),
concat = require("gulp-concat"),
cssmin = require("gulp-cssmin"),
uglify = require("gulp-uglify");
var paths = {
webroot: "./wwwroot/"
};
paths.js = paths.webroot + "js/**/*.js";
paths.minJs = paths.webroot + "js/**/*.min.js";
paths.css = paths.webroot + "css/**/*.css";
paths.minCss = paths.webroot + "css/**/*.min.css";
paths.concatJsDest = paths.webroot + "js/site.min.js";
paths.concatCssDest = paths.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"]);
Я видел некоторые решения, которые просто берут все из папки node_modules
, но это будет гигантская (ненужная) загрузка на сервер, чего я бы не делал.
Любая помощь?