diff --git a/examples/mod.js b/examples/mod.js index f0a4318b4..2a21ff5db 100644 --- a/examples/mod.js +++ b/examples/mod.js @@ -8,11 +8,31 @@ (function (global) { var require, define; var amis = window.amis || {}; + + // 获取当前加载脚本的路径,从而推断 sdk 的目录,用于异步加载其他资源 + // 仅用于 jssdk 场景 + let host = ''; + if (document.currentScript && document.currentScript.src) { + host = document.currentScript.src.replace(/\/[^\/]*$/, ''); + } else { + try { + throw new Error(); + } catch (e) { + host = (/((?:https?|file):.*?)\n/.test(e.stack) && RegExp.$1)?.replace( + /\/[^\/]*$/, + '' + ); + } + } + amis['sdk@@versionBasePath'] = host; + // 避免重复加载而导致已定义模块丢失 if (amis.require) { return; } + amis.sdkBasePath = host; + var head = document.getElementsByTagName('head')[0]; var loadingMap = {}; var factoryMap = {}; @@ -306,23 +326,6 @@ require.timeout = 5000; - // 获取当前加载脚本的路径,从而推断 sdk 的目录,用于异步加载其他资源 - // 仅用于 jssdk 场景 - let host = ''; - if (document.currentScript && document.currentScript.src) { - host = document.currentScript.src.replace(/\/[^\/]*$/, ''); - } else { - try { - throw new Error(); - } catch (e) { - host = (/((?:https?|file):.*?)\n/.test(e.stack) && RegExp.$1)?.replace( - /\/[^\/]*$/, - '' - ); - } - } - amis.sdkBasePath = host; - amis.require = require; amis.define = define; window.amis = amis; diff --git a/fis-conf.js b/fis-conf.js index e8e82c337..16109d1a2 100644 --- a/fis-conf.js +++ b/fis-conf.js @@ -657,7 +657,7 @@ if (fis.project.currentMedia() === 'publish-sdk') { /function\sfilterUrl\(url\)\s\{\s*return\s*url;/m, function () { return `function filterUrl(url) { - return amis.sdkBasePath + url.substring(1);`; + return amis['sdk@${package.version}BasePath'] + url.substring(1);`; } ); diff --git a/scripts/embed-packager.js b/scripts/embed-packager.js index ac70b08cd..c5ea47fe8 100644 --- a/scripts/embed-packager.js +++ b/scripts/embed-packager.js @@ -11,6 +11,7 @@ var rSourceMap = /(?:\/\/\#\s*sourceMappingURL[^\r\n\'\"]*|\/\*\#\s*sourceMappingURL[^\r\n\'\"]*\*\/)(?:\r?\n|$)/gi; var caches = {}; var createResource = fis.require('postpackager-loader/lib/resource.js'); +const package = require('../packages/amis/package.json'); function prefixCss(code, prefix) { var cssAst = css.parse(code); @@ -129,9 +130,9 @@ module.exports = function (ret, pack, settings, opt) { ${contents.replace( /\"url\"\s*\:\s*('|")(\.\/.*?)\1/g, function (_, quote, value) { - return `"url": amis.sdkBasePath + ${quote}${value.substring( - 1 - )}${quote}`; + return `"url": amis['sdk@${ + package.version + }BasePath'] + ${quote}${value.substring(1)}${quote}`; } )} })()`;