Browse Source

Merge branch 'dev' of https://github.com/abpframework/abp into dev

pull/6045/head
Alper Ebicoglu 6 years ago
parent
commit
5fc72b1e35
  1. 5
      docs/en/UI/AspNetCore/Client-Side-Package-Management.md
  2. 57
      npm/packs/aspnetcore.mvc.ui/gulp/copy-resources.js
  3. 2857
      npm/packs/aspnetcore.mvc.ui/package-lock.json
  4. 6
      npm/packs/aspnetcore.mvc.ui/package.json

5
docs/en/UI/AspNetCore/Client-Side-Package-Management.md

@ -76,7 +76,8 @@ module.exports = {
"@libs": "./wwwroot/libs" "@libs": "./wwwroot/libs"
}, },
clean: [ clean: [
"@libs" "@libs",
"!@libs/**/foo.txt"
], ],
mappings: { mappings: {
@ -85,7 +86,7 @@ module.exports = {
```` ````
* **aliases** section defines standard aliases (placeholders) that can be used in the mapping paths. **@node_modules** and **@libs** are required (by the standard packages), you can define your own aliases to reduce duplication. * **aliases** section defines standard aliases (placeholders) that can be used in the mapping paths. **@node_modules** and **@libs** are required (by the standard packages), you can define your own aliases to reduce duplication.
* **clean** section is a list of folders to clean before copying the files. * **clean** section is a list of folders to clean before copying the files. Glob matching and negation is enabled, so you can fine-tune what to delete and keep. The example above will clean everything inside `./wwwroot/libs`, but keep any `foo.txt` files.
* **mappings** section is a list of mappings of files/folders to copy. This example does not copy any resource itself, but depends on a standard package. * **mappings** section is a list of mappings of files/folders to copy. This example does not copy any resource itself, but depends on a standard package.
An example mapping configuration is shown below: An example mapping configuration is shown below:

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

@ -4,7 +4,9 @@
var gulp = require("gulp"), var gulp = require("gulp"),
merge = require("merge-stream"), merge = require("merge-stream"),
rimraf = require("rimraf"), fse = require('fs-extra'),
glob = require('glob'),
micromatch = require('micromatch'),
path = require("path"), path = require("path"),
extendObject = require('extend-object'); extendObject = require('extend-object');
@ -41,13 +43,42 @@
return undefined; return undefined;
} }
} }
function cleanFiles() { function cleanDirsAndFiles(patterns) {
if (resourceMapping.clean) { const { dirs, files } = findDirsAndFiles(patterns);
for (var i = 0; i < resourceMapping.clean.length; i++) {
rimraf.sync(replaceAliases(resourceMapping.clean[i]) + '/**/*', { force: true }); files.forEach(file => fse.unlinkSync(file));
} dirs.forEach(dir => {
} try {
fse.rmdirSync(dir);
} catch (_) {}
});
}
function findDirsAndFiles(patterns) {
const dirs = [];
const files = [];
const list = glob.sync('**/*', { dot: true });
const matches = micromatch(list, normalizeGlob(patterns), {
dot: true,
});
matches.forEach(match => {
if (!fse.pathExistsSync(match)) return;
(fse.statSync(match).isDirectory() ? dirs : files).push(match);
});
return { dirs, files };
}
function normalizeGlob(patterns) {
return patterns.map(pattern => {
const prefix = /\*$/.test(pattern) ? '' : '/**';
return replaceAliases(pattern).replace(/(!?)\.\//, '$1') + prefix;
});
} }
function normalizeResourceMapping(resourcemapping) { function normalizeResourceMapping(resourcemapping) {
@ -64,13 +95,7 @@
extendObject(defaultSettings.aliases, resourcemapping.aliases); extendObject(defaultSettings.aliases, resourcemapping.aliases);
resourcemapping.aliases = defaultSettings.aliases; resourcemapping.aliases = defaultSettings.aliases;
if (!resourcemapping.clean) { resourcemapping.clean = resourcemapping.clean || defaultSettings.clean;
resourcemapping.clean = [];
}
for (var i = 0; i < defaultSettings.clean.length; ++i) {
resourcemapping.clean.push(defaultSettings.clean[i]);
}
return resourcemapping; return resourcemapping;
} }
@ -112,7 +137,7 @@
rootPath = path; rootPath = path;
resourceMapping = normalizeResourceMapping(buildResourceMapping(rootPath)); resourceMapping = normalizeResourceMapping(buildResourceMapping(rootPath));
cleanFiles(); cleanDirsAndFiles(resourceMapping.clean);
var tasks = []; var tasks = [];

2857
npm/packs/aspnetcore.mvc.ui/package-lock.json

File diff suppressed because it is too large

6
npm/packs/aspnetcore.mvc.ui/package.json

@ -7,10 +7,12 @@
"dependencies": { "dependencies": {
"ansi-colors": "^4.1.1", "ansi-colors": "^4.1.1",
"extend-object": "^1.0.0", "extend-object": "^1.0.0",
"fs-extra": "^9.0.1",
"glob": "^7.1.6",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",
"path": "^0.12.7", "micromatch": "^4.0.2",
"rimraf": "^3.0.2" "path": "^0.12.7"
}, },
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
} }

Loading…
Cancel
Save