提交 339e85dd 编写于 作者: X Xin,Zhang 提交者: wu-sheng

fetch the module version (#22)

上级 95815a08
......@@ -20,6 +20,7 @@
const Module = require("module");
const resolve = require("resolve");
const path = require("path");
const fs = require("fs");
module.exports = hook;
......@@ -38,7 +39,8 @@ function hook(modules, requireCallback) {
let moduleName = "";
let matchModuleName = "";
let enhanceFile = "";
let version = "";
let version = undefined;
let basedir = undefined;
if (enhancedModuleCache.hasOwnProperty(filename)) {
return enhancedModuleCache[filename];
......@@ -56,7 +58,7 @@ function hook(modules, requireCallback) {
moduleName = isWithScope ?
pathSegment[index + 1] + "/" + pathSegment[index + 2] :
pathSegment[index + 1];
let basedir = pathSegment.slice(0, index + (isWithScope ? 3 : 2)).join(path.sep);
basedir = pathSegment.slice(0, index + (isWithScope ? 3 : 2)).join(path.sep);
try {
let res = resolve.sync(moduleName, {basedir: basedir});
if (res !== filename) {
......@@ -73,6 +75,17 @@ function hook(modules, requireCallback) {
}
if (modules && modules.indexOf(matchModuleName) === -1) return exports;
// get version. Because of we enhance Module.prototype.require, so we can't fetch the version by execute
// `require(basedir + path.sep + "package.json")` method
if (basedir) {
const packageJson = path.join(basedir, "package.json");
try {
version = JSON.parse(fs.readFileSync(packageJson)).version;
} catch (e) {
}
}
if (!enhancedModuleCache.hasOwnProperty(filename)) {
enhancedModuleCache[filename] = exports;
enhancedModuleCache[filename] = requireCallback(exports, moduleName, version, enhanceFile);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册