Browse Source

Automatically discover resource mapping dependencies.

pull/301/head
Halil ibrahim Kalkan 8 years ago
parent
commit
d0d49d98f0
  1. 56
      npm/packs/aspnetcore.mvc.ui/gulp/copy-resources.js

56
npm/packs/aspnetcore.mvc.ui/gulp/copy-resources.js

@ -10,8 +10,10 @@
path = require("path"), path = require("path"),
extendObject = require('extend-object'); extendObject = require('extend-object');
function init(rootMappingFilePath) { function init(rootPath) {
var resourceMapping = buildResourceMapping(rootMappingFilePath); var investigatedPackagePaths = {};
var resourceMapping = buildResourceMapping(rootPath);
function replaceAliases(text) { function replaceAliases(text) {
if (!resourceMapping.aliases) { if (!resourceMapping.aliases) {
@ -33,6 +35,15 @@
return text.replace(new RegExp(search, 'g'), replacement); return text.replace(new RegExp(search, 'g'), replacement);
} }
function requireOptional(filePath) {
//TODO: Implement this using a library instead of try-catch!
try {
return require(filePath);
} catch (e) {
return undefined;
}
}
function cleanFiles() { function cleanFiles() {
if (resourceMapping.clean) { if (resourceMapping.clean) {
for (var i = 0; i < resourceMapping.clean.length; i++) { for (var i = 0; i < resourceMapping.clean.length; i++) {
@ -41,20 +52,27 @@
} }
} }
function buildResourceMapping(mappingFilePath) { function buildResourceMapping(packagePath) {
var resourcemapping = require(mappingFilePath); if (investigatedPackagePaths[packagePath]) {
return {};
}
investigatedPackagePaths[packagePath] = 'OK';
if (resourcemapping.imports && resourcemapping.imports.length) { var packageJson = requireOptional(path.join(packagePath, 'package.json'));
var resourcemapping = requireOptional(path.join(packagePath, 'abp.resourcemapping.js')) || { };
if (packageJson && packageJson.dependencies) {
var aliases = {}; var aliases = {};
var mappings = {}; var mappings = {};
for (var i = 0; i < resourcemapping.imports.length; i++) { for (var dependency in packageJson.dependencies) {
if (packageJson.dependencies.hasOwnProperty(dependency)) {
var importedMappingFilePath = path.join(path.dirname(mappingFilePath), resourcemapping.imports[i]); var dependedPackagePath = path.join(rootPath, 'node_modules', dependency);
var importedResourceMapping = buildResourceMapping(importedMappingFilePath); var importedResourceMapping = buildResourceMapping(dependedPackagePath);
extendObject(aliases, importedResourceMapping.aliases); extendObject(aliases, importedResourceMapping.aliases);
extendObject(mappings, importedResourceMapping.mappings); extendObject(mappings, importedResourceMapping.mappings);
}
} }
extendObject(aliases, resourcemapping.aliases); extendObject(aliases, resourcemapping.aliases);
@ -73,13 +91,15 @@
var tasks = []; var tasks = [];
for (var mapping in resourceMapping.mappings) { if (resourceMapping.mappings) {
if (resourceMapping.mappings.hasOwnProperty(mapping)) { for (var mapping in resourceMapping.mappings) {
var source = replaceAliases(mapping); if (resourceMapping.mappings.hasOwnProperty(mapping)) {
var destination = replaceAliases(resourceMapping.mappings[mapping]); var source = replaceAliases(mapping);
tasks.push( var destination = replaceAliases(resourceMapping.mappings[mapping]);
gulp.src(source).pipe(gulp.dest(destination)) tasks.push(
); gulp.src(source).pipe(gulp.dest(destination))
);
}
} }
} }

Loading…
Cancel
Save