jgb-shared
Advanced tools
Comparing version 1.4.3 to 1.4.4-alpha.0
@@ -31,2 +31,5 @@ import { IInitOptions } from '../typings/jgb-shared'; | ||
constructor(name: string, options: IInitOptions); | ||
/** | ||
* 获取cli的Compiler | ||
*/ | ||
readonly compiler: ICompiler; | ||
@@ -45,3 +48,3 @@ invalidate(): void; | ||
realName: string; | ||
distPath: string; | ||
distPath: any; | ||
absolutePath: string; | ||
@@ -48,0 +51,0 @@ relativeRequirePath: string; |
@@ -14,2 +14,5 @@ "use strict"; | ||
var objectHash_1 = require("./utils/objectHash"); | ||
var WorkerFarm_1 = require("./workerfarm/WorkerFarm"); | ||
var DEFAULT_NPM_DIR = 'npm'; | ||
var REG_NODE_MODULES = /(\/node_modules\/|\/npm\/)/g; | ||
var NODE_MODULES = 'node_modules'; | ||
@@ -28,5 +31,9 @@ var cache = new Map(); | ||
this.relativeName = path.relative(options.sourceDir, name); | ||
this.resolver = new Resolver_1.default(options); | ||
var resolver = WorkerFarm_1.default.getSharedResolver(); | ||
this.resolver = resolver || new Resolver_1.default(options); | ||
} | ||
Object.defineProperty(Asset.prototype, "compiler", { | ||
/** | ||
* 获取cli的Compiler | ||
*/ | ||
get: function () { | ||
@@ -63,39 +70,8 @@ if (this.parentCompiler) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var e_1, _a, distPath, alias, _b, _c, key, aliasValue, sourceFile, dependenceFile, absolutePath, relativeRequirePath, parentDistPath; | ||
return tslib_1.__generator(this, function (_d) { | ||
switch (_d.label) { | ||
case 0: | ||
distPath = ''; | ||
alias = this.options.alias; | ||
/** | ||
* resolve alias get relativepath | ||
* @example | ||
* @/utils/index => ../utils/index | ||
*/ | ||
if (alias) { | ||
try { | ||
for (_b = tslib_1.__values(Object.keys(alias)), _c = _b.next(); !_c.done; _c = _b.next()) { | ||
key = _c.value; | ||
if (name.includes(key)) { | ||
aliasValue = utils_1.normalizeAlias(alias[key]); | ||
name = path.normalize(name.replace(key, aliasValue.path)); | ||
sourceFile = this.name; | ||
dependenceFile = name; | ||
// relative path: ..\\utils\\index => ../utils/index | ||
name = utils_1.promoteRelativePath(path.relative(sourceFile, dependenceFile)); | ||
break; | ||
} | ||
} | ||
} | ||
catch (e_1_1) { e_1 = { error: e_1_1 }; } | ||
finally { | ||
try { | ||
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); | ||
} | ||
finally { if (e_1) throw e_1.error; } | ||
} | ||
} | ||
return [4 /*yield*/, this.resolver.resolve(name, this.name)]; | ||
var absolutePath, relativeRequirePath, distPath, parentDistPath; | ||
return tslib_1.__generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, this.resolver.resolve(name, this.name)]; | ||
case 1: | ||
absolutePath = (_d.sent()).path; | ||
absolutePath = (_a.sent()).path; | ||
relativeRequirePath = ''; | ||
@@ -109,3 +85,3 @@ distPath = this.generateDistPath(absolutePath, ext); | ||
/* 文件真实路径 */ | ||
realName: name, | ||
realName: absolutePath, | ||
distPath: distPath, | ||
@@ -182,3 +158,3 @@ absolutePath: absolutePath, | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var e_2, _a, startTime, _b, generated, generated_1, generated_1_1, _c, code, ext, map, _d, _e, distPath, ignore, endTime, e_2_1; | ||
var e_1, _a, startTime, _b, generated, generated_1, generated_1_1, _c, code, ext, map, _d, _e, distPath, ignore, endTime, e_1_1; | ||
return tslib_1.__generator(this, function (_f) { | ||
@@ -233,4 +209,4 @@ switch (_f.label) { | ||
case 12: | ||
e_2_1 = _f.sent(); | ||
e_2 = { error: e_2_1 }; | ||
e_1_1 = _f.sent(); | ||
e_1 = { error: e_1_1 }; | ||
return [3 /*break*/, 14]; | ||
@@ -241,3 +217,3 @@ case 13: | ||
} | ||
finally { if (e_2) throw e_2.error; } | ||
finally { if (e_1) throw e_1.error; } | ||
return [7 /*endfinally*/]; | ||
@@ -342,8 +318,9 @@ case 14: return [2 /*return*/]; | ||
if (ext === void 0) { ext = ''; } | ||
if (cache.has(sourcePath)) { | ||
return cache.get(sourcePath); | ||
var cacheKey = "" + sourcePath + ext; | ||
if (cache.has(cacheKey)) { | ||
return cache.get(cacheKey); | ||
} | ||
var alias = this.options.alias; | ||
var sourceDir = path.resolve(this.options.sourceDir); | ||
var name = sourcePath; | ||
var sourceDir = utils_1.pathToUnixType(path.resolve(this.options.sourceDir)); | ||
var name = utils_1.pathToUnixType(sourcePath); | ||
var distPath = ''; | ||
@@ -354,4 +331,6 @@ var aliasDirs = tslib_1.__spread(Object.entries(alias)); | ||
var normalizedAlias = utils_1.normalizeAlias(aliasValue); | ||
var dir = normalizedAlias.path; | ||
var distDir = normalizedAlias.dist ? normalizedAlias.dist : 'npm'; | ||
var dir = utils_1.pathToUnixType(normalizedAlias.path); | ||
var distDir = normalizedAlias.dist | ||
? normalizedAlias.dist | ||
: DEFAULT_NPM_DIR; | ||
// in alias source dir but not in build source file | ||
@@ -370,2 +349,7 @@ if (name.includes(sourceDir)) { | ||
} | ||
// fix style | ||
distPath = utils_1.pathToUnixType(distPath); | ||
/** | ||
* node_modules/npm => npm | ||
*/ | ||
if ((!distPath && name.includes(NODE_MODULES)) || | ||
@@ -375,3 +359,3 @@ distPath.includes(NODE_MODULES)) { | ||
var relativeAlias = spNM.pop(); | ||
distPath = path.join(this.options.outDir, 'npm', relativeAlias); | ||
distPath = path.join(this.options.outDir, DEFAULT_NPM_DIR, relativeAlias); | ||
} | ||
@@ -391,3 +375,3 @@ if (!distPath) { | ||
} | ||
cache.set(sourcePath, distPath); | ||
cache.set(cacheKey, distPath); | ||
return distPath; | ||
@@ -560,2 +544,2 @@ }; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQStCO0FBQy9CLDBCQUE0QjtBQUM1QiwyQkFBNkI7QUFDN0IseUJBQTJCO0FBRTNCLGlDQUFtQztBQUNuQyxtQ0FBa0M7QUFFbEMsdUNBQWtDO0FBRWxDLGlDQUE4RTtBQUM5RSx1Q0FBa0M7QUFDbEMsaURBQTRDO0FBRTVDLElBQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUVwQyxJQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBUXhCO0lBc0JFLGVBQW1CLElBQVksRUFBUyxPQUFxQjtRQUExQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQXBCN0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFLZCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBc0MsSUFBSSxDQUFDO1FBT3BELGNBQVMsR0FBUSxFQUFFLENBQUM7UUFPbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxzQkFBSSwyQkFBUTthQUFaO1lBQ0UsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDNUI7UUFDSCxDQUFDOzs7T0FBQTtJQUVELDBCQUFVLEdBQVY7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztR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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQStCO0FBQy9CLDBCQUE0QjtBQUM1QiwyQkFBNkI7QUFDN0IseUJBQTJCO0FBRTNCLGlDQUFtQztBQUNuQyxtQ0FBa0M7QUFFbEMsdUNBQWtDO0FBRWxDLGlDQUE4RTtBQUM5RSx1Q0FBa0M7QUFDbEMsaURBQTRDO0FBQzVDLHNEQUFpRDtBQUVqRCxJQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsSUFBTSxnQkFBZ0IsR0FBRyw2QkFBNkIsQ0FBQztBQUV2RCxJQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFcEMsSUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQVF4QjtJQXNCRSxlQUFtQixJQUFZLEVBQVMsT0FBcUI7UUFBMUMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFwQjdELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN0QyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBS2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQXNDLElBQUksQ0FBQztRQU9wRCxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBT2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFLRCxzQkFBSSwyQkFBUTtRQUha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 |
@@ -119,2 +119,2 @@ "use strict"; | ||
exports.error = error; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0JBQXFDO0FBRXJDLHNEQUFpRDtBQUlqRCxJQUFZLE9BS1g7QUFMRCxXQUFZLE9BQU87SUFDakIsMkNBQU8sQ0FBQTtJQUNQLHVDQUFLLENBQUE7SUFDTCxxQ0FBSSxDQUFBO0lBQ0osbUNBQUcsQ0FBQTtBQUNMLENBQUMsRUFMVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFLbEI7QUFFRDtJQUlFO1FBRkEsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFHaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsb0JBQUcsR0FBSCxVQUNFLE9BQVksRUFDWixJQUEwQyxFQUMxQyxRQUFpQjtRQURqQixxQkFBQSxFQUFBLE9BQStCLE9BQU8sQ0FBQyxHQUFHO1FBRzFDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLElBQUksS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxJQUFJLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUM1QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksSUFBSSxL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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0JBQXFDO0FBQ3JDLHNEQUFpRDtBQUlqRCxJQUFZLE9BS1g7QUFMRCxXQUFZLE9BQU87SUFDakIsMkNBQU8sQ0FBQTtJQUNQLHVDQUFLLENBQUE7SUFDTCxxQ0FBSSxDQUFBO0lBQ0osbUNBQUcsQ0FBQTtBQUNMLENBQUMsRUFMVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFLbEI7QUFFRDtJQUlFO1FBRkEsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFHaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsb0JBQUcsR0FBSCxVQUNFLE9BQVksRUFDWixJQUEwQyxFQUMxQyxRQUFpQjtRQURqQixxQkFBQSxFQUFBLE9BQStCLE9BQU8sQ0FBQyxHQUFHO1FBRzFDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLElBQUksS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzFCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxJQUFJLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUM1QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksSUFBSSxL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 |
import Asset from './Asset'; | ||
import AwaitEventEmitter from './awaitEventEmitter'; | ||
export declare type TypeAsset = typeof Asset; | ||
/** | ||
* cli的Compiler实例 | ||
*/ | ||
export interface ICompiler extends AwaitEventEmitter { | ||
addAssetsType(exts: string | string[], asset: TypeAsset): void; | ||
} | ||
export declare type IPluginRegister = (compiler: ICompiler, config: any) => any; | ||
export default function declare(pluginRegister: IPluginRegister): IPluginRegister; | ||
/** 返回pluginName */ | ||
export declare type IPluginRegister = (compiler: ICompiler, config: any) => string | void; | ||
export default function declare(pluginRegister: IPluginRegister): any; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var chalk_1 = require("chalk"); | ||
var Logger_1 = require("./Logger"); | ||
var loadedPlugins = new Set(); | ||
function declare(pluginRegister) { | ||
return function (compiler, config) { | ||
return pluginRegister(compiler, config); | ||
var pluginName = pluginRegister(compiler, config); | ||
if (!pluginName || loadedPlugins.has(pluginName)) { | ||
return; | ||
} | ||
loadedPlugins.add(pluginName); | ||
Logger_1.logger.log(chalk_1.default.gray("[\u52A0\u8F7D]: " + pluginName)); | ||
}; | ||
} | ||
exports.default = declare; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luRGVjbGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wbHVnaW5EZWNsYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsU0FBd0IsT0FBTyxDQUM3QixjQUErQjtJQUUvQixPQUFPLFVBQUMsUUFBbUIsRUFBRSxNQUFXO1FBQ3RDLE9BQU8sY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBTkQsMEJBTUMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luRGVjbGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wbHVnaW5EZWNsYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQXFDO0FBR3JDLG1DQUFrQztBQWFsQyxJQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRWhDLFNBQXdCLE9BQU8sQ0FBQyxjQUErQjtJQUM3RCxPQUFPLFVBQUMsUUFBbUIsRUFBRSxNQUFXO1FBQ3RDLElBQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hELE9BQU87U0FDUjtRQUNELGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsZUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFTLFVBQVksQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELDBCQVNDIn0= |
@@ -1,2 +0,2 @@ | ||
import { IAliasValue, IInitOptions } from "../typings/jgb-shared"; | ||
import { IAliasValue, IInitOptions } from '../typings/jgb-shared'; | ||
export default class Resolver { | ||
@@ -44,3 +44,10 @@ private options; | ||
loadAlias(fileName: string, dir: string): Promise<string>; | ||
loadResolveAlias(fileName: string, dir: string): Promise<string>; | ||
/** | ||
* resolve alias get relativepath | ||
* @param fileName | ||
* @param dir 如果有dir则返回相对路径,否则返回绝对路径 | ||
* @example | ||
* @/utils/index => ../utils/index | ||
*/ | ||
loadResolveAlias(fileName: string, dir?: string): string; | ||
resolveAliases(fileName: string, pkg: any): string; | ||
@@ -47,0 +54,0 @@ resolvePackageAliases(fileName: string, pkg: any): string; |
@@ -43,3 +43,3 @@ "use strict"; | ||
} | ||
exts.unshift(""); | ||
exts.unshift(''); | ||
return [4 /*yield*/, this.resolveModule(fileName, parent)]; | ||
@@ -49,3 +49,3 @@ case 1: | ||
dir = parent ? path.dirname(parent) : process.cwd(); | ||
if (!("moduleDir" in module && module.moduleDir)) return [3 /*break*/, 3]; | ||
if (!('moduleDir' in module && module.moduleDir)) return [3 /*break*/, 3]; | ||
return [4 /*yield*/, this.loadNodeModules(module, exts)]; | ||
@@ -81,3 +81,3 @@ case 2: | ||
Resolver.prototype.getCacheKey = function (fileName, parent) { | ||
return (parent ? path.dirname(parent) : "") + ":" + fileName; | ||
return (parent ? path.dirname(parent) : '') + ':' + fileName; | ||
}; | ||
@@ -144,3 +144,3 @@ Resolver.prototype.resolveModule = function (fileName, parent) { | ||
// Skip node_modules directories | ||
if (path.basename(dir) === "node_modules") { | ||
if (path.basename(dir) === 'node_modules') { | ||
dir = path.dirname(dir); | ||
@@ -151,3 +151,3 @@ } | ||
_a.trys.push([2, 4, , 5]); | ||
moduleDir = path.join(dir, "node_modules", parts[0]); | ||
moduleDir = path.join(dir, 'node_modules', parts[0]); | ||
return [4 /*yield*/, util_1.promisify(fs.stat)(moduleDir)]; | ||
@@ -161,3 +161,3 @@ case 3: | ||
moduleDir: moduleDir, | ||
filePath: path.join(dir, "node_modules", filename) | ||
filePath: path.join(dir, 'node_modules', filename) | ||
}]; | ||
@@ -316,3 +316,3 @@ } | ||
var browser = this.getBrowserField(pkg); | ||
if (browser && typeof browser === "object" && browser[pkg.name]) { | ||
if (browser && typeof browser === 'object' && browser[pkg.name]) { | ||
browser = browser[pkg.name]; | ||
@@ -324,7 +324,7 @@ } | ||
return [pkg.source, browser, pkg.main, pkg.module] | ||
.filter(function (entry) { return typeof entry === "string"; }) | ||
.filter(function (entry) { return typeof entry === 'string'; }) | ||
.map(function (main) { | ||
// Default to index file if no main field find | ||
if (!main || main === "." || main === "./") { | ||
main = "index"; | ||
if (!main || main === '.' || main === './') { | ||
main = 'index'; | ||
} | ||
@@ -385,3 +385,3 @@ return path.resolve(pkg.pkgdir, main); | ||
return [3 /*break*/, 13]; | ||
case 13: return [4 /*yield*/, this.loadAsFile(path.join(dir, "index"), extensions, pkg)]; | ||
case 13: return [4 /*yield*/, this.loadAsFile(path.join(dir, 'index'), extensions, pkg)]; | ||
case 14: | ||
@@ -397,3 +397,3 @@ // Fall back to an index file inside the directory. | ||
switch (fileName[0]) { | ||
case "/": | ||
case '/': | ||
if (fsExtra.existsSync(fileName)) { | ||
@@ -404,11 +404,11 @@ return fileName; | ||
return path.resolve(this.options.sourceDir, fileName.slice(1)); | ||
case "~": | ||
case '~': | ||
// Tilde path. Resolve relative to nearest node_modules directory, | ||
// or the project root - whichever comes first. | ||
while (dir !== this.options.rootDir && | ||
path.basename(path.dirname(dir)) !== "node_modules") { | ||
path.basename(path.dirname(dir)) !== 'node_modules') { | ||
dir = path.dirname(dir); | ||
} | ||
return path.join(dir, fileName.slice(1)); | ||
case ".": | ||
case '.': | ||
// Relative path. | ||
@@ -452,31 +452,35 @@ return path.resolve(dir, fileName); | ||
}; | ||
/** | ||
* resolve alias get relativepath | ||
* @param fileName | ||
* @param dir 如果有dir则返回相对路径,否则返回绝对路径 | ||
* @example | ||
* @/utils/index => ../utils/index | ||
*/ | ||
Resolver.prototype.loadResolveAlias = function (fileName, dir) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var e_5, _a, _b, _c, key, target; | ||
return tslib_1.__generator(this, function (_d) { | ||
try { | ||
for (_b = tslib_1.__values(this.alias.keys()), _c = _b.next(); !_c.done; _c = _b.next()) { | ||
key = _c.value; | ||
if (fileName.startsWith(key)) { | ||
target = this.alias.get(key); | ||
/** | ||
* @src: path.resolve('src') | ||
* | ||
* @src/abc => /src/abc | ||
*/ | ||
fileName = fileName.replace(key, utils_1.normalizeAlias(target).path); | ||
return [2 /*return*/, this.resolveFilename(fileName, dir)]; | ||
} | ||
} | ||
var e_5, _a; | ||
fileName = utils_1.pathToUnixType(fileName); | ||
try { | ||
for (var _b = tslib_1.__values(this.alias.keys()), _c = _b.next(); !_c.done; _c = _b.next()) { | ||
var key = _c.value; | ||
if (fileName.includes(key)) { | ||
var target = this.alias.get(key); | ||
var normalizedAlias = utils_1.normalizeAlias(target); | ||
fileName = fileName.replace(key, normalizedAlias.path); | ||
// if (dir) { | ||
// const relativePath = path.relative(dir, fileName); | ||
// return pathToUnixType(relativePath); | ||
// } | ||
return utils_1.pathToUnixType(fileName); | ||
} | ||
catch (e_5_1) { e_5 = { error: e_5_1 }; } | ||
finally { | ||
try { | ||
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); | ||
} | ||
finally { if (e_5) throw e_5.error; } | ||
} | ||
return [2 /*return*/]; | ||
}); | ||
}); | ||
} | ||
} | ||
catch (e_5_1) { e_5 = { error: e_5_1 }; } | ||
finally { | ||
try { | ||
if (_c && !_c.done && (_a = _b.return)) _a.call(_b); | ||
} | ||
finally { if (e_5) throw e_5.error; } | ||
} | ||
return; | ||
}; | ||
@@ -498,7 +502,7 @@ Resolver.prototype.resolveAliases = function (fileName, pkg) { | ||
Resolver.prototype.getBrowserField = function (pkg) { | ||
var target = this.options.target || "browser"; | ||
return target === "browser" ? pkg.browser : null; | ||
var target = this.options.target || 'browser'; | ||
return target === 'browser' ? pkg.browser : null; | ||
}; | ||
Resolver.prototype.getAlias = function (fileName, dir, aliases) { | ||
if (!fileName || !aliases || typeof aliases !== "object") { | ||
if (!fileName || !aliases || typeof aliases !== 'object') { | ||
return null; | ||
@@ -510,4 +514,4 @@ } | ||
fileName = path.relative(dir, fileName); | ||
if (fileName[0] !== ".") { | ||
fileName = "./" + fileName; | ||
if (fileName[0] !== '.') { | ||
fileName = './' + fileName; | ||
} | ||
@@ -523,3 +527,3 @@ alias = this.lookupAlias(aliases, fileName, dir); | ||
alias = this.lookupAlias(aliases, parts[0], dir); | ||
if (typeof alias === "string") { | ||
if (typeof alias === 'string') { | ||
// Append the fileName back onto the aliased module. | ||
@@ -532,3 +536,3 @@ alias = path.join.apply(path, tslib_1.__spread([alias], parts.slice(1))); | ||
if (alias === false) { | ||
return ""; | ||
return ''; | ||
} | ||
@@ -540,3 +544,3 @@ return alias; | ||
var alias = aliases[fileName]; | ||
if (typeof alias === "string") { | ||
if (typeof alias === 'string') { | ||
return this.resolveFilename(alias, dir); | ||
@@ -555,3 +559,3 @@ } | ||
case 1: | ||
if (!(dir !== root && path.basename(dir) !== "node_modules")) return [3 /*break*/, 6]; | ||
if (!(dir !== root && path.basename(dir) !== 'node_modules')) return [3 /*break*/, 6]; | ||
_a.label = 2; | ||
@@ -576,3 +580,3 @@ case 2: | ||
var root = path.parse(dir).root; | ||
while (dir !== root && path.basename(dir) !== "node_modules") { | ||
while (dir !== root && path.basename(dir) !== 'node_modules') { | ||
try { | ||
@@ -593,7 +597,7 @@ return this.readPackageSync(dir); | ||
case 0: | ||
file = path.join(dir, "package.json"); | ||
file = path.join(dir, 'package.json'); | ||
if (this.packageCache.has(file)) { | ||
return [2 /*return*/, this.packageCache.get(file)]; | ||
} | ||
return [4 /*yield*/, util_1.promisify(fs.readFile)(file, { encoding: "utf8" })]; | ||
return [4 /*yield*/, util_1.promisify(fs.readFile)(file, { encoding: 'utf8' })]; | ||
case 1: | ||
@@ -620,7 +624,7 @@ json = _a.sent(); | ||
Resolver.prototype.readPackageSync = function (dir) { | ||
var file = path.join(dir, "package.json"); | ||
var file = path.join(dir, 'package.json'); | ||
if (this.packageCache.has(file)) { | ||
return this.packageCache.get(file); | ||
} | ||
var json = fs.readFileSync(file, { encoding: "utf8" }); | ||
var json = fs.readFileSync(file, { encoding: 'utf8' }); | ||
var pkg = JSON.parse(json); | ||
@@ -632,3 +636,3 @@ pkg.pkgfile = file; | ||
if (pkg.source) { | ||
var realpath = fs.readFileSync(file, { encoding: "utf8" }); | ||
var realpath = fs.readFileSync(file, { encoding: 'utf8' }); | ||
if (realpath === file) { | ||
@@ -643,3 +647,3 @@ delete pkg.source; | ||
var parts = path.normalize(name).split(path.sep); | ||
if (parts[0].charAt(0) === "@") { | ||
if (parts[0].charAt(0) === '@') { | ||
// Scoped module (e.g. @scope/module). Merge the first two parts back together. | ||
@@ -653,2 +657,2 @@ parts.splice(0, 2, parts[0] + "/" + parts[1]); | ||
exports.default = Resolver; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdUJBQXlCO0FBQ3pCLGtDQUFvQztBQUNwQywyQkFBNkI7QUFDN0IsNkJBQWlDO0FBRWpDLGlDQUF5QztBQUV6QyxxQkFBcUI7QUFFckIsaUNBQWlDO0FBRWpDO0lBV0Usa0JBQW9CLE9BQXFCO1FBQXpDLGlCQUtDO1FBTG1CLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFWekMsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXpCOzs7V0FHRztRQUNILFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztRQUdyQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBTSxPQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVLLDBCQUFPLEdBQWIsVUFBYyxRQUFnQixFQUFFLE1BQVc7Ozs7Ozt3QkFDbkMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUVwRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUM1QixzQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQzt5QkFDakM7d0JBRUcsSUFB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdUJBQXlCO0FBQ3pCLGtDQUFvQztBQUNwQywyQkFBNkI7QUFDN0IsNkJBQWlDO0FBRWpDLGlDQUF5RDtBQUV6RCxxQkFBcUI7QUFFckIsaUNBQWlDO0FBRWpDO0lBV0Usa0JBQW9CLE9BQXFCO1FBQXpDLGlCQUtDO1FBTG1CLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFWekMsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXpCOzs7V0FHRztRQUNILFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztRQUdyQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBTSxPQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVLLDBCQUFPLEdBQWIsVUFBYyxRQUFnQixFQUFFLE1BQVc7Ozs7Ozt3QkFDbkMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUVwRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUM1QixzQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQzt5QkFDakM7d0JBRUcsSUFB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 |
@@ -15,2 +15,3 @@ /// <reference types="node" /> | ||
bundlerOptions: any; | ||
startPrefTime: any; | ||
constructor(options: any, farmOptions?: any); | ||
@@ -35,4 +36,2 @@ /** | ||
processQueue(): Promise<void>; | ||
prefStartChild(): void; | ||
prefCpuUsage(): void; | ||
/** | ||
@@ -47,2 +46,11 @@ * 处理请求 | ||
init(bundlerOptions: any): void; | ||
/** | ||
* 开启cpu占用优化 | ||
*/ | ||
startPref(time?: number): Promise<void>; | ||
getCpuUsageAsync(): Promise<number>; | ||
/** | ||
* 停止cpu占用优化 | ||
*/ | ||
stopPref(): void; | ||
persistBundlerOptions(): void; | ||
@@ -56,2 +64,3 @@ startMaxWorkers(): void; | ||
static getShared(options?: any, farmOptions?: any): WorkerFarm; | ||
static getSharedResolver(): any; | ||
/** | ||
@@ -58,0 +67,0 @@ * 获取cpu核心数 |
@@ -8,3 +8,2 @@ "use strict"; | ||
var Logger_1 = require("../Logger"); | ||
var decorator_1 = require("../utils/decorator"); | ||
var errorUtils_1 = require("./errorUtils"); | ||
@@ -23,3 +22,3 @@ var Worker_1 = require("./Worker"); | ||
_this.options = Object.assign({ | ||
maxConcurrentWorkers: 1, | ||
maxConcurrentWorkers: WorkerFarm.getNumWorkers(), | ||
maxConcurrentCallsPerWorker: WorkerFarm.getConcurrentCallsPerWorker(), | ||
@@ -34,2 +33,3 @@ forcedKillTime: 500, | ||
_this.init(options); | ||
_this.startPref(); | ||
return _this; | ||
@@ -160,5 +160,4 @@ } | ||
if (this.workers.size < this.options.maxConcurrentWorkers) { | ||
this.prefStartChild(); | ||
this.startChild(); | ||
} | ||
this.prefCpuUsage(); | ||
workers = tslib_1.__spread(this.workers.values()).filter(function (worker) { return !(!worker.ready || worker.stopped || worker.isStopping); }) | ||
@@ -190,36 +189,2 @@ .sort(function (w1, w2) { return w1.calls.size - w2.calls.size; }); | ||
}; | ||
WorkerFarm.prototype.prefStartChild = function () { | ||
var _this = this; | ||
if (this.cpuUsage > 0.8) { | ||
return; | ||
} | ||
osUtil.cpuUsage(function (v) { | ||
_this.cpuUsage = v; | ||
if (v < 0.8 && _this.workers.size < _this.options.maxConcurrentWorkers) { | ||
_this.startChild(); | ||
} | ||
}); | ||
}; | ||
WorkerFarm.prototype.prefCpuUsage = function () { | ||
var _this = this; | ||
// 优化cpu占用率 | ||
osUtil.cpuUsage(function (v) { | ||
_this.cpuUsage = v; | ||
// 满cpu需要暂停一个进程 | ||
if (v >= 0.99) { | ||
var _a = tslib_1.__read(_this.workers.values(), 1), worker = _a[0]; | ||
worker.isStopping = true; | ||
} | ||
// cpu空闲可以开启进程 | ||
if (v <= 0.5) { | ||
var stopedWorkers = tslib_1.__spread(_this.workers.values()).filter(function (worker) { return worker.isStopping; }); | ||
if (stopedWorkers.length) { | ||
stopedWorkers[0].isStopping = false; | ||
} | ||
else { | ||
_this.options.maxConcurrentWorkers++; | ||
} | ||
} | ||
}); | ||
}; | ||
/** | ||
@@ -308,2 +273,3 @@ * 处理请求 | ||
this.ending = true; | ||
this.stopPref(); | ||
return [4 /*yield*/, Promise.all(Array.from(this.workers.values()).map(function (worker) { return _this.stopWorker(worker); }))]; | ||
@@ -327,2 +293,60 @@ case 1: | ||
}; | ||
/** | ||
* 开启cpu占用优化 | ||
*/ | ||
WorkerFarm.prototype.startPref = function (time) { | ||
if (time === void 0) { time = 1000; } | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var _this = this; | ||
return tslib_1.__generator(this, function (_a) { | ||
this.startPrefTime = setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { | ||
var workers, cpu, noStoppedWorkers, targetWorker, stopedWorkers, targetWorker; | ||
return tslib_1.__generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
workers = tslib_1.__spread(this.workers.values()); | ||
return [4 /*yield*/, this.getCpuUsageAsync()]; | ||
case 1: | ||
cpu = _a.sent(); | ||
// 满cpu需要暂停一个进程 | ||
if (cpu >= 0.9) { | ||
noStoppedWorkers = workers.filter(function (w) { return !w.isStopping; }); | ||
if (noStoppedWorkers.length > 1) { | ||
targetWorker = noStoppedWorkers.pop(); | ||
Logger_1.logger.info("current cpu: " + Number(cpu.toFixed(2)) * 100 + "%. stop a worker " + targetWorker.id); | ||
targetWorker.isStopping = true; | ||
} | ||
} | ||
// cpu空闲可以开启执行更多任务 | ||
if (cpu <= 0.5 && this.cpuUsage <= 0.5) { | ||
stopedWorkers = workers.filter(function (worker) { return worker.isStopping; }); | ||
if (stopedWorkers.length) { | ||
targetWorker = stopedWorkers[0]; | ||
Logger_1.logger.info("current cpu: " + cpu + ". start a stopped worker " + targetWorker.id); | ||
targetWorker.isStopping = false; | ||
} | ||
} | ||
this.cpuUsage = cpu; | ||
this.startPref(time * 1.2); | ||
return [2 /*return*/]; | ||
} | ||
}); | ||
}); }, time); | ||
return [2 /*return*/]; | ||
}); | ||
}); | ||
}; | ||
WorkerFarm.prototype.getCpuUsageAsync = function () { | ||
return new Promise(function (resolve) { | ||
osUtil.cpuUsage(function (v) { | ||
resolve(v); | ||
}); | ||
}); | ||
}; | ||
/** | ||
* 停止cpu占用优化 | ||
*/ | ||
WorkerFarm.prototype.stopPref = function () { | ||
clearTimeout(this.startPrefTime); | ||
}; | ||
WorkerFarm.prototype.persistBundlerOptions = function () { | ||
@@ -372,2 +396,8 @@ var e_4, _a; | ||
}; | ||
WorkerFarm.getSharedResolver = function () { | ||
if (shared) { | ||
var core = shared.options.core; | ||
return core && core.resolver; | ||
} | ||
}; | ||
/** | ||
@@ -413,11 +443,5 @@ * 获取cpu核心数 | ||
}; | ||
tslib_1.__decorate([ | ||
decorator_1.debounce(100) | ||
], WorkerFarm.prototype, "prefStartChild", null); | ||
tslib_1.__decorate([ | ||
decorator_1.throttle(1000) | ||
], WorkerFarm.prototype, "prefCpuUsage", null); | ||
return WorkerFarm; | ||
}(events_1.EventEmitter)); | ||
exports.default = WorkerFarm; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyRmFybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXJmYXJtL1dvcmtlckZhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXNDO0FBQ3RDLHVCQUF5QjtBQUN6QixpQ0FBbUM7QUFFbkMsb0NBQW1DO0FBQ25DLGdEQUF3RDtBQUN4RCwyQ0FBMkM7QUFDM0MsbUNBQThCO0FBRTlCLElBQUksTUFBTSxHQUFlLElBQUksQ0FBQztBQUU5QjtJQUF3QyxzQ0FBWTtJQVdsRCxvQkFBWSxPQUFZLEVBQUUsV0FBcUI7UUFBckIsNEJBQUEsRUFBQSxnQkFBcUI7UUFBL0MsWUFDRSxpQkFBTyxTQWtCUjtRQTVCRCxpQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBTyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3BDLGVBQVMsR0FBVSxFQUFFLENBQUM7UUFTcEIsS0FBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMxQjtZQUNFLG9CQUFvQixFQUFFLENBQUM7WUFDdkIsMkJBQTJCLEVBQUUsVUFBVSxDQUFDLDJCQUEyQixFQUFFO1lBQ3JFLGNBQWMsRUFBRSxHQUFHO1lBQ25CLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFVBQVUsRUFBRSxXQUFXO1NBQ3hCLEVBQ0QsV0FBVyxDQUNaLENBQUM7UUFFRixLQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELEtBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoQyxLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlDQUFZLEdBQVosVUFBYSxNQUFjLEVB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2VyRmFybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXJmYXJtL1dvcmtlckZhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXNDO0FBQ3RDLHVCQUF5QjtBQUN6QixpQ0FBbUM7QUFFbkMsb0NBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtQ0FBOEI7QUFFOUIsSUFBSSxNQUFNLEdBQWUsSUFBSSxDQUFDO0FBRTlCO0lBQXdDLHNDQUFZO0lBWWxELG9CQUFZLE9BQVksRUFBRSxXQUFxQjtRQUFyQiw0QkFBQSxFQUFBLGdCQUFxQjtRQUEvQyxZQUNFLGlCQUFPLFNBbUJSO1FBOUJELGlCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGNBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDcEMsZUFBUyxHQUFVLEVBQUUsQ0FBQztRQVVwQixLQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzFCO1lBQ0Usb0JBQW9CLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNoRCwyQkFBMkIsRUFBRSxVQUFVLENBQUMsMkJBQTJCLEVBQUU7WUFDckUsY0FBYyxFQUFFLEdBQUc7WUFDbkIsV0FBVyxFQUFFLElBQUk7WUFDakIsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLFdBQVc7U0FDeEIsRUFDRCxXQUFXLENBQ1osQ0FBQztRQUVGLEtBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsS0FBSSxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkIsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDOztJQUNuQixDQUFDO0lBRUQ7Ozs7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 |
{ | ||
"name": "jgb-shared", | ||
"version": "1.4.3", | ||
"version": "1.4.4-alpha.0", | ||
"main": "lib/index.js", | ||
@@ -44,3 +44,3 @@ "license": "MIT", | ||
}, | ||
"gitHead": "f517f4e6e2a9c4eb0e2fa38837c8f4e996e6ddb9" | ||
"gitHead": "738a04f819888ec0eebf98574f1ea152dd00bc64" | ||
} |
@@ -14,3 +14,7 @@ import * as fs from 'fs-extra'; | ||
import objectHash from './utils/objectHash'; | ||
import WorkerFarm from './workerfarm/WorkerFarm'; | ||
const DEFAULT_NPM_DIR = 'npm'; | ||
const REG_NODE_MODULES = /(\/node_modules\/|\/npm\/)/g; | ||
const NODE_MODULES = 'node_modules'; | ||
@@ -51,5 +55,9 @@ | ||
this.relativeName = path.relative(options.sourceDir, name); | ||
this.resolver = new Resolver(options); | ||
const resolver = WorkerFarm.getSharedResolver(); | ||
this.resolver = resolver || new Resolver(options); | ||
} | ||
/** | ||
* 获取cli的Compiler | ||
*/ | ||
get compiler() { | ||
@@ -84,24 +92,2 @@ if (this.parentCompiler) { | ||
async resolveAliasName(name: string, ext: string = '') { | ||
let distPath = ''; | ||
const alias = this.options.alias; | ||
/** | ||
* resolve alias get relativepath | ||
* @example | ||
* @/utils/index => ../utils/index | ||
*/ | ||
if (alias) { | ||
for (const key of Object.keys(alias)) { | ||
if (name.includes(key)) { | ||
const aliasValue = normalizeAlias(alias[key]); | ||
name = path.normalize(name.replace(key, aliasValue.path)); | ||
const sourceFile = this.name; | ||
const dependenceFile = name; | ||
// relative path: ..\\utils\\index => ../utils/index | ||
name = promoteRelativePath(path.relative(sourceFile, dependenceFile)); | ||
break; | ||
} | ||
} | ||
} | ||
/** resolve relative path */ | ||
@@ -119,3 +105,3 @@ const { path: absolutePath } = (await this.resolver.resolve( | ||
distPath = this.generateDistPath(absolutePath, ext); | ||
const distPath = this.generateDistPath(absolutePath, ext); | ||
const parentDistPath = this.generateDistPath(this.name, ext); | ||
@@ -131,3 +117,3 @@ | ||
/* 文件真实路径 */ | ||
realName: name, | ||
realName: absolutePath, | ||
distPath, | ||
@@ -280,9 +266,10 @@ absolutePath, | ||
generateDistPath(sourcePath: string, ext: string = '') { | ||
if (cache.has(sourcePath)) { | ||
return cache.get(sourcePath); | ||
const cacheKey = `${sourcePath}${ext}`; | ||
if (cache.has(cacheKey)) { | ||
return cache.get(cacheKey); | ||
} | ||
const alias = this.options.alias; | ||
const sourceDir = path.resolve(this.options.sourceDir); | ||
const name = sourcePath; | ||
const sourceDir = pathToUnixType(path.resolve(this.options.sourceDir)); | ||
const name = pathToUnixType(sourcePath); | ||
let distPath = ''; | ||
@@ -295,4 +282,6 @@ | ||
const normalizedAlias = normalizeAlias(aliasValue); | ||
const dir = normalizedAlias.path; | ||
const distDir = normalizedAlias.dist ? normalizedAlias.dist : 'npm'; | ||
const dir = pathToUnixType(normalizedAlias.path); | ||
const distDir = normalizedAlias.dist | ||
? normalizedAlias.dist | ||
: DEFAULT_NPM_DIR; | ||
// in alias source dir but not in build source file | ||
@@ -318,2 +307,8 @@ if (name.includes(sourceDir)) { | ||
// fix style | ||
distPath = pathToUnixType(distPath); | ||
/** | ||
* node_modules/npm => npm | ||
*/ | ||
if ( | ||
@@ -325,3 +320,3 @@ (!distPath && name.includes(NODE_MODULES)) || | ||
const relativeAlias = spNM.pop(); | ||
distPath = path.join(this.options.outDir, 'npm', relativeAlias); | ||
distPath = path.join(this.options.outDir, DEFAULT_NPM_DIR, relativeAlias); | ||
} | ||
@@ -344,3 +339,3 @@ | ||
cache.set(sourcePath, distPath); | ||
cache.set(cacheKey, distPath); | ||
return distPath; | ||
@@ -347,0 +342,0 @@ } |
import chalk, { Chalk } from 'chalk'; | ||
import { Console } from 'console'; | ||
import WorkerFarm from './workerfarm/WorkerFarm'; | ||
@@ -4,0 +3,0 @@ |
@@ -0,5 +1,10 @@ | ||
import chalk, { Chalk } from 'chalk'; | ||
import Asset from './Asset'; | ||
import AwaitEventEmitter from './awaitEventEmitter'; | ||
import { logger } from './Logger'; | ||
export type TypeAsset = typeof Asset; | ||
/** | ||
* cli的Compiler实例 | ||
*/ | ||
export interface ICompiler extends AwaitEventEmitter { | ||
@@ -9,10 +14,16 @@ addAssetsType(exts: string | string[], asset: TypeAsset): void; | ||
export type IPluginRegister = (compiler: ICompiler, config: any) => any; | ||
/** 返回pluginName */ | ||
export type IPluginRegister = (compiler: ICompiler, config: any) => string | void; | ||
export default function declare( | ||
pluginRegister: IPluginRegister | ||
): IPluginRegister { | ||
const loadedPlugins = new Set(); | ||
export default function declare(pluginRegister: IPluginRegister): any { | ||
return (compiler: ICompiler, config: any) => { | ||
return pluginRegister(compiler, config); | ||
const pluginName = pluginRegister(compiler, config); | ||
if (!pluginName || loadedPlugins.has(pluginName)) { | ||
return; | ||
} | ||
loadedPlugins.add(pluginName); | ||
logger.log(chalk.gray(`[加载]: ${pluginName}`)); | ||
}; | ||
} |
@@ -1,8 +0,8 @@ | ||
import * as debug from "debug"; | ||
import * as fs from "fs"; | ||
import * as fsExtra from "fs-extra"; | ||
import * as path from "path"; | ||
import { promisify } from "util"; | ||
import { IAliasValue, IInitOptions } from "../typings/jgb-shared"; | ||
import { normalizeAlias } from "./utils"; | ||
import * as debug from 'debug'; | ||
import * as fs from 'fs'; | ||
import * as fsExtra from 'fs-extra'; | ||
import * as path from 'path'; | ||
import { promisify } from 'util'; | ||
import { IAliasValue, IInitOptions } from '../typings/jgb-shared'; | ||
import { normalizeAlias, pathToUnixType } from './utils'; | ||
@@ -45,3 +45,3 @@ // debug.enable('*'); | ||
exts.unshift(""); | ||
exts.unshift(''); | ||
@@ -53,3 +53,3 @@ // Resolve the module directory or local file path | ||
if ("moduleDir" in module && module.moduleDir) { | ||
if ('moduleDir' in module && module.moduleDir) { | ||
resolved = await this.loadNodeModules(module, exts); | ||
@@ -74,3 +74,3 @@ } else if (module.filePath) { | ||
getCacheKey(fileName: string, parent: any) { | ||
return (parent ? path.dirname(parent) : "") + ":" + fileName; | ||
return (parent ? path.dirname(parent) : '') + ':' + fileName; | ||
} | ||
@@ -124,3 +124,3 @@ | ||
// Skip node_modules directories | ||
if (path.basename(dir) === "node_modules") { | ||
if (path.basename(dir) === 'node_modules') { | ||
dir = path.dirname(dir); | ||
@@ -131,3 +131,3 @@ } | ||
// First, check if the module directory exists. This prevents a lot of unnecessary checks later. | ||
const moduleDir = path.join(dir, "node_modules", parts[0]); | ||
const moduleDir = path.join(dir, 'node_modules', parts[0]); | ||
const stats = await promisify(fs.stat)(moduleDir); | ||
@@ -139,3 +139,3 @@ if (stats.isDirectory()) { | ||
moduleDir, | ||
filePath: path.join(dir, "node_modules", filename) | ||
filePath: path.join(dir, 'node_modules', filename) | ||
}; | ||
@@ -226,3 +226,3 @@ } | ||
let browser = this.getBrowserField(pkg); | ||
if (browser && typeof browser === "object" && browser[pkg.name]) { | ||
if (browser && typeof browser === 'object' && browser[pkg.name]) { | ||
browser = browser[pkg.name]; | ||
@@ -235,7 +235,7 @@ } | ||
return [pkg.source, browser, pkg.main, pkg.module] | ||
.filter(entry => typeof entry === "string") | ||
.filter(entry => typeof entry === 'string') | ||
.map(main => { | ||
// Default to index file if no main field find | ||
if (!main || main === "." || main === "./") { | ||
main = "index"; | ||
if (!main || main === '.' || main === './') { | ||
main = 'index'; | ||
} | ||
@@ -275,3 +275,3 @@ | ||
// Fall back to an index file inside the directory. | ||
return await this.loadAsFile(path.join(dir, "index"), extensions, pkg); | ||
return await this.loadAsFile(path.join(dir, 'index'), extensions, pkg); | ||
} | ||
@@ -282,3 +282,3 @@ | ||
switch (fileName[0]) { | ||
case "/": | ||
case '/': | ||
if (fsExtra.existsSync(fileName)) { | ||
@@ -290,3 +290,3 @@ return fileName; | ||
case "~": | ||
case '~': | ||
// Tilde path. Resolve relative to nearest node_modules directory, | ||
@@ -296,3 +296,3 @@ // or the project root - whichever comes first. | ||
dir !== this.options.rootDir && | ||
path.basename(path.dirname(dir)) !== "node_modules" | ||
path.basename(path.dirname(dir)) !== 'node_modules' | ||
) { | ||
@@ -304,3 +304,3 @@ dir = path.dirname(dir); | ||
case ".": | ||
case '.': | ||
// Relative path. | ||
@@ -337,15 +337,24 @@ return path.resolve(dir, fileName); | ||
async loadResolveAlias(fileName: string, dir: string) { | ||
/** | ||
* resolve alias get relativepath | ||
* @param fileName | ||
* @param dir 如果有dir则返回相对路径,否则返回绝对路径 | ||
* @example | ||
* @/utils/index => ../utils/index | ||
*/ | ||
loadResolveAlias(fileName: string, dir?: string) { | ||
fileName = pathToUnixType(fileName); | ||
for (const key of this.alias.keys()) { | ||
if (fileName.startsWith(key)) { | ||
if (fileName.includes(key)) { | ||
const target = this.alias.get(key); | ||
/** | ||
* @src: path.resolve('src') | ||
* | ||
* @src/abc => /src/abc | ||
*/ | ||
fileName = fileName.replace(key, normalizeAlias(target).path); | ||
return this.resolveFilename(fileName, dir); | ||
const normalizedAlias = normalizeAlias(target); | ||
fileName = fileName.replace(key, normalizedAlias.path); | ||
// if (dir) { | ||
// const relativePath = path.relative(dir, fileName); | ||
// return pathToUnixType(relativePath); | ||
// } | ||
return pathToUnixType(fileName); | ||
} | ||
} | ||
return; | ||
} | ||
@@ -376,8 +385,8 @@ | ||
getBrowserField(pkg: any) { | ||
const target = this.options.target || "browser"; | ||
return target === "browser" ? pkg.browser : null; | ||
const target = this.options.target || 'browser'; | ||
return target === 'browser' ? pkg.browser : null; | ||
} | ||
getAlias(fileName: string, dir: string, aliases: any): string | null { | ||
if (!fileName || !aliases || typeof aliases !== "object") { | ||
if (!fileName || !aliases || typeof aliases !== 'object') { | ||
return null; | ||
@@ -391,4 +400,4 @@ } | ||
fileName = path.relative(dir, fileName); | ||
if (fileName[0] !== ".") { | ||
fileName = "./" + fileName; | ||
if (fileName[0] !== '.') { | ||
fileName = './' + fileName; | ||
} | ||
@@ -404,3 +413,3 @@ | ||
alias = this.lookupAlias(aliases, parts[0], dir); | ||
if (typeof alias === "string") { | ||
if (typeof alias === 'string') { | ||
// Append the fileName back onto the aliased module. | ||
@@ -414,3 +423,3 @@ alias = path.join(alias, ...parts.slice(1)); | ||
if (alias === false) { | ||
return ""; | ||
return ''; | ||
} | ||
@@ -425,3 +434,3 @@ | ||
if (typeof alias === "string") { | ||
if (typeof alias === 'string') { | ||
return this.resolveFilename(alias, dir); | ||
@@ -436,3 +445,3 @@ } | ||
const root = path.parse(dir).root; | ||
while (dir !== root && path.basename(dir) !== "node_modules") { | ||
while (dir !== root && path.basename(dir) !== 'node_modules') { | ||
try { | ||
@@ -451,3 +460,3 @@ return await this.readPackage(dir); | ||
const root = path.parse(dir).root; | ||
while (dir !== root && path.basename(dir) !== "node_modules") { | ||
while (dir !== root && path.basename(dir) !== 'node_modules') { | ||
try { | ||
@@ -464,3 +473,3 @@ return this.readPackageSync(dir); | ||
async readPackage(dir: string) { | ||
const file = path.join(dir, "package.json"); | ||
const file = path.join(dir, 'package.json'); | ||
if (this.packageCache.has(file)) { | ||
@@ -470,3 +479,3 @@ return this.packageCache.get(file); | ||
const json = await promisify(fs.readFile)(file, { encoding: "utf8" }); | ||
const json = await promisify(fs.readFile)(file, { encoding: 'utf8' }); | ||
const pkg = JSON.parse(json); | ||
@@ -491,3 +500,3 @@ | ||
readPackageSync(dir: string) { | ||
const file = path.join(dir, "package.json"); | ||
const file = path.join(dir, 'package.json'); | ||
if (this.packageCache.has(file)) { | ||
@@ -497,3 +506,3 @@ return this.packageCache.get(file); | ||
const json = fs.readFileSync(file, { encoding: "utf8" }); | ||
const json = fs.readFileSync(file, { encoding: 'utf8' }); | ||
const pkg = JSON.parse(json); | ||
@@ -507,3 +516,3 @@ | ||
if (pkg.source) { | ||
const realpath = fs.readFileSync(file, { encoding: "utf8" }); | ||
const realpath = fs.readFileSync(file, { encoding: 'utf8' }); | ||
if (realpath === file) { | ||
@@ -520,3 +529,3 @@ delete pkg.source; | ||
const parts = path.normalize(name).split(path.sep); | ||
if (parts[0].charAt(0) === "@") { | ||
if (parts[0].charAt(0) === '@') { | ||
// Scoped module (e.g. @scope/module). Merge the first two parts back together. | ||
@@ -523,0 +532,0 @@ parts.splice(0, 2, `${parts[0]}/${parts[1]}`); |
@@ -22,2 +22,3 @@ import { EventEmitter } from 'events'; | ||
bundlerOptions: any; | ||
startPrefTime: any; | ||
@@ -29,3 +30,3 @@ constructor(options: any, farmOptions: any = {}) { | ||
{ | ||
maxConcurrentWorkers: 1, // WorkerFarm.getNumWorkers(), | ||
maxConcurrentWorkers: WorkerFarm.getNumWorkers(), | ||
maxConcurrentCallsPerWorker: WorkerFarm.getConcurrentCallsPerWorker(), | ||
@@ -44,2 +45,3 @@ forcedKillTime: 500, | ||
this.init(options); | ||
this.startPref(); | ||
} | ||
@@ -159,7 +161,5 @@ | ||
if (this.workers.size < this.options.maxConcurrentWorkers) { | ||
this.prefStartChild(); | ||
this.startChild(); | ||
} | ||
this.prefCpuUsage(); | ||
// 能够工作并且任务量最少优先的worker | ||
@@ -184,40 +184,2 @@ const workers = [...this.workers.values()] | ||
@debounce(100) | ||
prefStartChild() { | ||
if (this.cpuUsage > 0.8) { | ||
return; | ||
} | ||
osUtil.cpuUsage((v: any) => { | ||
this.cpuUsage = v; | ||
if (v < 0.8 && this.workers.size < this.options.maxConcurrentWorkers) { | ||
this.startChild(); | ||
} | ||
}); | ||
} | ||
@throttle(1000) | ||
prefCpuUsage() { | ||
// 优化cpu占用率 | ||
osUtil.cpuUsage((v: any) => { | ||
this.cpuUsage = v; | ||
// 满cpu需要暂停一个进程 | ||
if (v >= 0.99) { | ||
const [worker] = this.workers.values(); | ||
worker.isStopping = true; | ||
} | ||
// cpu空闲可以开启进程 | ||
if (v <= 0.5) { | ||
const stopedWorkers = [...this.workers.values()].filter( | ||
worker => worker.isStopping | ||
); | ||
if (stopedWorkers.length) { | ||
stopedWorkers[0].isStopping = false; | ||
} else { | ||
this.options.maxConcurrentWorkers++; | ||
} | ||
} | ||
}); | ||
} | ||
/** | ||
@@ -285,2 +247,3 @@ * 处理请求 | ||
this.ending = true; | ||
this.stopPref(); | ||
await Promise.all( | ||
@@ -304,2 +267,52 @@ Array.from(this.workers.values()).map(worker => this.stopWorker(worker)) | ||
/** | ||
* 开启cpu占用优化 | ||
*/ | ||
async startPref(time = 1000) { | ||
this.startPrefTime = setTimeout(async () => { | ||
const workers = [...this.workers.values()]; | ||
const cpu = await this.getCpuUsageAsync(); | ||
// 满cpu需要暂停一个进程 | ||
if (cpu >= 0.9) { | ||
const noStoppedWorkers = workers.filter(w => !w.isStopping); | ||
if (noStoppedWorkers.length > 1) { | ||
const targetWorker = noStoppedWorkers.pop(); | ||
logger.info( | ||
`current cpu: ${Number(cpu.toFixed(2)) * 100}%. stop a worker ${ | ||
targetWorker.id | ||
}` | ||
); | ||
targetWorker.isStopping = true; | ||
} | ||
} | ||
// cpu空闲可以开启执行更多任务 | ||
if (cpu <= 0.5 && this.cpuUsage <= 0.5) { | ||
const stopedWorkers = workers.filter(worker => worker.isStopping); | ||
if (stopedWorkers.length) { | ||
const targetWorker = stopedWorkers[0]; | ||
logger.info( | ||
`current cpu: ${cpu}. start a stopped worker ${targetWorker.id}` | ||
); | ||
targetWorker.isStopping = false; | ||
} | ||
} | ||
this.cpuUsage = cpu; | ||
this.startPref(time * 1.2); | ||
}, time); | ||
} | ||
getCpuUsageAsync(): Promise<number> { | ||
return new Promise(resolve => { | ||
osUtil.cpuUsage((v: number) => { | ||
resolve(v); | ||
}); | ||
}); | ||
} | ||
/** | ||
* 停止cpu占用优化 | ||
*/ | ||
stopPref() { | ||
clearTimeout(this.startPrefTime); | ||
} | ||
persistBundlerOptions() { | ||
@@ -349,2 +362,9 @@ for (const worker of this.workers.values()) { | ||
static getSharedResolver() { | ||
if (shared) { | ||
const core = shared.options.core; | ||
return core && core.resolver; | ||
} | ||
} | ||
/** | ||
@@ -351,0 +371,0 @@ * 获取cpu核心数 |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
354057
5946
1