diff --git a/pom.xml b/pom.xml
index 4d6d5b9..1ee00f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
MiaoScript
- 0.10.0
+ 0.10.1
502647092
diff --git a/src/main/resources/core/require.js b/src/main/resources/core/require.js
index defa3a5..f6c1d76 100644
--- a/src/main/resources/core/require.js
+++ b/src/main/resources/core/require.js
@@ -95,7 +95,7 @@
* @returns {*}
*/
function _isFile(file) {
- return file.isFile && file.isFile()
+ return file && file.isFile && file.isFile()
}
/**
@@ -362,7 +362,7 @@
* 检查缓存模块
*/
function checkCacheModule(optional) {
- return !optional.path.startsWith('/') && cacheModuleIds[optional.parentId] && cacheModuleIds[optional.parentId][optional.path]
+ return optional.local ? cacheModuleIds[optional.parentId] && cacheModuleIds[optional.parentId][optional.path] : cacheModuleIds[optional.path]
}
/**
* 加载模块
@@ -372,12 +372,16 @@
* @returns {*}
*/
function _require(name, path, optional) {
+ // require direct file
+ var file = _isFile(name) ? name : new File(name)
+ if (_isFile(file)) { return _requireFile(file, optional) }
+ // require cache module
var cachePath = checkCacheModule(optional)
- if (cachePath) { return _requireFile(new File(cachePath), optional) }
+ var cacheFile = new File(cachePath)
+ if (cachePath && cacheFile.exists()) { return _requireFile(cacheFile, optional) }
+ // search module
name = checkCoreModule(name, path, optional)
- var file = new File(name)
- file = _isFile(file) ? file : resolve(name, path, optional)
- if (file === undefined) {
+ if ((file = resolve(name, path, optional)) === undefined) {
// excloud local dir, prevent too many recursive call and cache not found module
if (optional.local || optional.recursive || notFoundModules[name]) {
console.log(name, path, optional, notFoundModules[name])
@@ -391,12 +395,24 @@
throw new FileNotFoundException("Can't found module " + name + ' in directory ' + path + ' ERROR: ' + ex)
}
}
- var parent = cacheModuleIds[optional.parentId]
- if (!parent) { cacheModuleIds[optional.parentId] = {} }
- cacheModuleIds[optional.parentId][optional.path] = _canonical(file)
+ setCacheModule(file, optional)
return _requireFile(file, optional)
}
+ /**
+ * 设置模块缓存
+ * @param {any} file
+ * @param {any} optional
+ */
+ function setCacheModule(file, optional) {
+ if (optional.local) {
+ var parent = cacheModuleIds[optional.parentId]
+ if (!parent) { cacheModuleIds[optional.parentId] = {} }
+ return cacheModuleIds[optional.parentId][optional.path] = _canonical(file)
+ }
+ return cacheModuleIds[optional.path] = _canonical(file)
+ }
+
function _requireFile(file, optional) {
// 重定向文件名称和类型
return getCacheModule(_canonical(file), file.name.split('.')[0], file, optional)
@@ -440,7 +456,7 @@
function __DynamicDisable__() {
// @ts-ignore
- base.save(cacheModuleIdsFile, JSON.stringify(cacheModuleIds))
+ base.save(cacheModuleIdsFile, JSON.stringify(upgradeMode ? {} : cacheModuleIds))
for (var cacheModule in cacheModules) {
delete cacheModules[cacheModule]
}
@@ -452,6 +468,10 @@
notFoundModules = undefined
}
+ function __setUpgradeMode__(status) {
+ upgradeMode = status
+ }
+
/**
* @param {string} parent
* @param {string} parentId
@@ -464,6 +484,7 @@
require.resolve = __DynamicResolve__
require.clear = __DynamicClear__
require.disable = __DynamicDisable__
+ require.setUpgradeMode = __setUpgradeMode__
require.core_modules = CoreModules
return require
}
@@ -484,6 +505,7 @@
* @type {{[key:string]:boolean}} notFoundModules
*/
var notFoundModules = {}
+ var upgradeMode = false
console.info('Initialization require module. ParentDir:', _canonical(parent))
console.info('Require module env list:')
console.info('- NODE_PATH:', NODE_PATH)