feat: add local version lock
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
parent
389bfd7137
commit
7b171f1546
6
pom.xml
6
pom.xml
@ -1,9 +1,8 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>pw.yumc</groupId>
|
<groupId>pw.yumc</groupId>
|
||||||
<artifactId>MiaoScript</artifactId>
|
<artifactId>MiaoScript</artifactId>
|
||||||
<version>0.13.0</version>
|
<version>0.13.1</version>
|
||||||
<developers>
|
<developers>
|
||||||
<developer>
|
<developer>
|
||||||
<id>502647092</id>
|
<id>502647092</id>
|
||||||
@ -54,6 +53,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<env.GIT_COMMIT>DEV</env.GIT_COMMIT>
|
<env.GIT_COMMIT>DEV</env.GIT_COMMIT>
|
||||||
<update.changes>
|
<update.changes>
|
||||||
|
§621-06-22 §afeat: 新增本地版本锁定功能;
|
||||||
§621-06-19 §afeat: 兼容JDK16 反射异常;
|
§621-06-19 §afeat: 兼容JDK16 反射异常;
|
||||||
§621-05-15 §afeat: 兼容JDK15+ 自动下载Nashorn类库;
|
§621-05-15 §afeat: 兼容JDK15+ 自动下载Nashorn类库;
|
||||||
§621-03-25 §afeat: 异步加载 polyfill 并且同步加载 @ccms/core;
|
§621-03-25 §afeat: 异步加载 polyfill 并且同步加载 @ccms/core;
|
||||||
|
@ -238,7 +238,7 @@
|
|||||||
cacheModules[id] = module
|
cacheModules[id] = module
|
||||||
var cfile = _canonical(file)
|
var cfile = _canonical(file)
|
||||||
if (cfile.endsWith('.js')) {
|
if (cfile.endsWith('.js')) {
|
||||||
compileJs(module, file, __assign(optional, { id: id }))
|
compileJs(module, file, __assign(optional, {id: id}))
|
||||||
} else if (cfile.endsWith('.json')) {
|
} else if (cfile.endsWith('.json')) {
|
||||||
compileJson(module, file)
|
compileJson(module, file)
|
||||||
} else if (cfile.endsWith('.msm')) {
|
} else if (cfile.endsWith('.msm')) {
|
||||||
@ -298,7 +298,9 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
var target = NODE_PATH + separatorChar + module_name
|
var target = NODE_PATH + separatorChar + module_name
|
||||||
var _package = new File(target, 'package.json')
|
var _package = new File(target, 'package.json')
|
||||||
if (_package.exists()) { return }
|
if (_package.exists()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
// at windows need replace file name java.lang.IllegalArgumentException: Invalid prefix or suffix
|
// at windows need replace file name java.lang.IllegalArgumentException: Invalid prefix or suffix
|
||||||
var info = fetchPackageInfo(module_name)
|
var info = fetchPackageInfo(module_name)
|
||||||
var url = info.versions[ModulesVersionLock[module_name] || info['dist-tags']['latest']].dist.tarball
|
var url = info.versions[ModulesVersionLock[module_name] || info['dist-tags']['latest']].dist.tarball
|
||||||
@ -344,6 +346,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var lastModule = ''
|
var lastModule = ''
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查核心模块
|
* 检查核心模块
|
||||||
* @param {string} name
|
* @param {string} name
|
||||||
@ -368,12 +371,14 @@
|
|||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查缓存模块
|
* 检查缓存模块
|
||||||
*/
|
*/
|
||||||
function checkCacheModule(optional) {
|
function checkCacheModule(optional) {
|
||||||
return optional.local ? cacheModuleIds[optional.parentId] && cacheModuleIds[optional.parentId][optional.path] : cacheModuleIds[optional.path]
|
return optional.local ? cacheModuleIds[optional.parentId] && cacheModuleIds[optional.parentId][optional.path] : cacheModuleIds[optional.path]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载模块
|
* 加载模块
|
||||||
* @param {string} name 模块名称
|
* @param {string} name 模块名称
|
||||||
@ -384,11 +389,15 @@
|
|||||||
function _require(name, path, optional) {
|
function _require(name, path, optional) {
|
||||||
// require direct file
|
// require direct file
|
||||||
var file = _isFile(name) ? name : new File(name)
|
var file = _isFile(name) ? name : new File(name)
|
||||||
if (_isFile(file)) { return _requireFile(file, optional) }
|
if (_isFile(file)) {
|
||||||
|
return _requireFile(file, optional)
|
||||||
|
}
|
||||||
// require cache module
|
// require cache module
|
||||||
var cachePath = checkCacheModule(optional)
|
var cachePath = checkCacheModule(optional)
|
||||||
var cacheFile = new File(cachePath)
|
var cacheFile = new File(cachePath)
|
||||||
if (cachePath && cacheFile.exists()) { return _requireFile(cacheFile, optional) }
|
if (cachePath && cacheFile.exists()) {
|
||||||
|
return _requireFile(cacheFile, optional)
|
||||||
|
}
|
||||||
// search module
|
// search module
|
||||||
name = checkCoreModule(name, path, optional)
|
name = checkCoreModule(name, path, optional)
|
||||||
if ((file = resolve(name, path, optional)) === undefined) {
|
if ((file = resolve(name, path, optional)) === undefined) {
|
||||||
@ -410,13 +419,15 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置模块缓存
|
* 设置模块缓存
|
||||||
* @param {any} file
|
* @param {any} file
|
||||||
* @param {any} optional
|
* @param {any} optional
|
||||||
*/
|
*/
|
||||||
function setCacheModule(file, optional) {
|
function setCacheModule(file, optional) {
|
||||||
if (optional.local) {
|
if (optional.local) {
|
||||||
var parent = cacheModuleIds[optional.parentId]
|
var parent = cacheModuleIds[optional.parentId]
|
||||||
if (!parent) { cacheModuleIds[optional.parentId] = {} }
|
if (!parent) {
|
||||||
|
cacheModuleIds[optional.parentId] = {}
|
||||||
|
}
|
||||||
return cacheModuleIds[optional.parentId][optional.path] = _canonical(file)
|
return cacheModuleIds[optional.parentId][optional.path] = _canonical(file)
|
||||||
}
|
}
|
||||||
return cacheModuleIds[optional.path] = _canonical(file)
|
return cacheModuleIds[optional.path] = _canonical(file)
|
||||||
@ -439,8 +450,16 @@
|
|||||||
* @param {any} optional
|
* @param {any} optional
|
||||||
*/
|
*/
|
||||||
return function __DynamicRequire__(path, optional) {
|
return function __DynamicRequire__(path, optional) {
|
||||||
if (!path) { throw new Error('require path can\'t be undefined or empty!') }
|
if (!path) {
|
||||||
return _require(path, parent, __assign({ cache: true, parentId: parentId, parent: parent, path: path, local: path.startsWith('.') || path.startsWith('/') }, optional)).exports
|
throw new Error('require path can\'t be undefined or empty!')
|
||||||
|
}
|
||||||
|
return _require(path, parent, __assign({
|
||||||
|
cache: true,
|
||||||
|
parentId: parentId,
|
||||||
|
parent: parent,
|
||||||
|
path: path,
|
||||||
|
local: path.startsWith('.') || path.startsWith('/')
|
||||||
|
}, optional)).exports
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,7 +468,11 @@
|
|||||||
* @param {any} optional 附加选项
|
* @param {any} optional 附加选项
|
||||||
*/
|
*/
|
||||||
function __DynamicResolve__(path, optional) {
|
function __DynamicResolve__(path, optional) {
|
||||||
return _canonical(new File(resolve(path, parent, __assign({ cache: true, parent: parent, local: path.startsWith('.') || path.startsWith('/') }, optional))))
|
return _canonical(new File(resolve(path, parent, __assign({
|
||||||
|
cache: true,
|
||||||
|
parent: parent,
|
||||||
|
local: path.startsWith('.') || path.startsWith('/')
|
||||||
|
}, optional))))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -507,6 +530,7 @@
|
|||||||
*/
|
*/
|
||||||
var cacheModules = {}
|
var cacheModules = {}
|
||||||
var cacheModuleIdsFile = _canonical(new File(NODE_PATH, 'cacheModuleIds.json'))
|
var cacheModuleIdsFile = _canonical(new File(NODE_PATH, 'cacheModuleIds.json'))
|
||||||
|
var localVersionLockFile = _canonical(new File(NODE_PATH, 'moduleVersionLock.json'))
|
||||||
/**
|
/**
|
||||||
* @type {{[key:string]:{[key:string]:string}}} cacheModuleIds
|
* @type {{[key:string]:{[key:string]:string}}} cacheModuleIds
|
||||||
*/
|
*/
|
||||||
@ -531,6 +555,11 @@
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
ModulesVersionLock = JSON.parse(fetchContent('http://ms.yumc.pw/api/plugin/download/name/version_lock', 'version_lock'))
|
ModulesVersionLock = JSON.parse(fetchContent('http://ms.yumc.pw/api/plugin/download/name/version_lock', 'version_lock'))
|
||||||
|
try {
|
||||||
|
// @ts-ignore
|
||||||
|
ModulesVersionLock = __assign(ModulesVersionLock, JSON.parse(base.read(localVersionLockFile)))
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
console.info('Lock module version List:')
|
console.info('Lock module version List:')
|
||||||
for (var key in ModulesVersionLock) {
|
for (var key in ModulesVersionLock) {
|
||||||
console.info('- ' + key + ': ' + ModulesVersionLock[key])
|
console.info('- ' + key + ': ' + ModulesVersionLock[key])
|
||||||
|
Loading…
Reference in New Issue
Block a user