You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
6.6 KiB
177 lines
6.6 KiB
"use strict"; |
|
var __importDefault = (this && this.__importDefault) || function (mod) { |
|
return (mod && mod.__esModule) ? mod : { "default": mod }; |
|
}; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
const path_1 = __importDefault(require("path")); |
|
const fast_glob_1 = require("fast-glob"); |
|
const shared_1 = require("@vue/shared"); |
|
const uni_shared_1 = require("@dcloudio/uni-shared"); |
|
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); |
|
const validateFunction_1 = require("./validateFunction"); |
|
const uniCloudSpaces = []; |
|
const initUniCloudEnvOnce = (0, uni_shared_1.once)(initUniCloudEnv); |
|
initUniCloudEnvOnce(); |
|
/** |
|
* @type {import('vite').Plugin} |
|
*/ |
|
function uniCloudPlugin() { |
|
return { |
|
name: 'uni:cloud', |
|
config(config) { |
|
const silent = config.build && config.build.ssr ? true : false; |
|
if (silent) { |
|
return; |
|
} |
|
const len = uniCloudSpaces.length; |
|
if (!len) { |
|
return; |
|
} |
|
if ((0, uni_cli_shared_1.isInHybridNVue)(config)) { |
|
return; |
|
} |
|
if (len === 1) { |
|
console.log(`本项目的uniCloud使用的默认服务空间spaceId为:${uniCloudSpaces[0].id}`); |
|
} |
|
if (process.env.UNI_PLATFORM === 'h5' && |
|
!process.env.UNI_SUB_PLATFORM && |
|
process.env.NODE_ENV === 'production') { |
|
console.warn('发布到web端需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinh5'); |
|
} |
|
return {}; |
|
}, |
|
configureServer(server) { |
|
if (server.httpServer) { |
|
server.httpServer.on('listening', () => { |
|
process.nextTick(() => { |
|
initUniCloudWarningOnce(); |
|
}); |
|
}); |
|
} |
|
else { |
|
initUniCloudWarningOnce(); |
|
} |
|
}, |
|
closeBundle() { |
|
if (process.env.UNI_PLATFORM === 'h5' && !process.env.UNI_SSR_CLIENT) { |
|
console.log(); |
|
console.log('欢迎将web站点部署到uniCloud前端网页托管平台,高速、免费、安全、省心,详见:https://uniapp.dcloud.io/uniCloud/hosting'); |
|
} |
|
}, |
|
}; |
|
} |
|
const initUniCloudWarningOnce = (0, uni_shared_1.once)(() => { |
|
uniCloudSpaces.length && |
|
console.warn('当前项目使用了uniCloud,为避免云函数调用跨域问题,建议在HBuilderX内置浏览器里调试,如使用外部浏览器需处理跨域,详见:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinh5'); |
|
}); |
|
function checkProjectUniCloudDir() { |
|
return !!(0, fast_glob_1.sync)(['uniCloud-aliyun', 'uniCloud-tcb'], { |
|
cwd: (0, uni_cli_shared_1.isInHBuilderX)() |
|
? process.env.UNI_INPUT_DIR |
|
: process.env.UNI_CLI_CONTEXT, |
|
onlyDirectories: true, |
|
onlyFiles: false, |
|
ignore: ['node_modules'], |
|
}).length; |
|
} |
|
function resolveUniCloudModules() { |
|
return (0, fast_glob_1.sync)('**/uni_modules/*/uniCloud', { |
|
cwd: process.env.UNI_INPUT_DIR, |
|
onlyDirectories: true, |
|
onlyFiles: false, |
|
ignore: ['node_modules'], |
|
}).map((dir) => path_1.default.dirname(dir)); |
|
} |
|
function checkUniModules() { |
|
if (!checkProjectUniCloudDir()) { |
|
const uniCloudModules = resolveUniCloudModules(); |
|
if (uniCloudModules.length) { |
|
console.warn(`${uniCloudModules.join(', ')} 使用了uniCloud,而项目未启动uniCloud。需在项目点右键创建uniCloud环境`); |
|
} |
|
} |
|
} |
|
function initUniCloudEnv() { |
|
checkUniModules(); |
|
if (process.env.UNI_CLOUD_PROVIDER) { |
|
const spaces = JSON.parse(process.env.UNI_CLOUD_PROVIDER); |
|
if (!(0, shared_1.isArray)(spaces)) { |
|
return; |
|
} |
|
if (spaces.length) { |
|
uniCloudSpaces.push(...spaces); |
|
return; |
|
} |
|
} |
|
process.env.UNI_CLOUD_PROVIDER = JSON.stringify([]); |
|
if (!process.env.UNI_CLOUD_SPACES) { |
|
return; |
|
} |
|
try { |
|
const spaces = JSON.parse(process.env.UNI_CLOUD_SPACES); |
|
if (!(0, shared_1.isArray)(spaces)) { |
|
return; |
|
} |
|
spaces.forEach((s) => uniCloudSpaces.push(s)); |
|
process.env.UNI_CLOUD_PROVIDER = JSON.stringify(uniCloudSpaces.map((space) => { |
|
if (space.provider === 'tcb') { |
|
space.provider = 'tencent'; |
|
} |
|
if (space.clientSecret) { |
|
return { |
|
provider: space.provider || 'aliyun', |
|
spaceName: space.name, |
|
spaceId: space.id, |
|
clientSecret: space.clientSecret, |
|
endpoint: space.apiEndpoint, |
|
}; |
|
} |
|
else { |
|
return { |
|
provider: space.provider || 'tencent', |
|
spaceName: space.name, |
|
spaceId: space.id, |
|
}; |
|
} |
|
})); |
|
} |
|
catch (e) { } |
|
} |
|
exports.default = () => [ |
|
(0, uni_cli_shared_1.defineUniMainJsPlugin)((opts) => { |
|
return { |
|
name: 'uni:cloud', |
|
enforce: 'pre', |
|
config(config, env) { |
|
if ((0, uni_cli_shared_1.isSsr)(env.command, config)) { |
|
return; |
|
} |
|
const inputDir = process.env.UNI_INPUT_DIR; |
|
const platform = process.env.UNI_PLATFORM; |
|
const isSecureNetworkEnabled = (0, uni_cli_shared_1.isEnableSecureNetwork)(inputDir, platform); |
|
return { |
|
define: { |
|
'process.env.UNI_SECURE_NETWORK_ENABLE': isSecureNetworkEnabled, |
|
'process.env.UNI_SECURE_NETWORK_CONFIG': process.env.UNI_SECURE_NETWORK_CONFIG || JSON.stringify([]), |
|
}, |
|
}; |
|
}, |
|
transform(code, id) { |
|
if (!opts.filter(id)) { |
|
return; |
|
} |
|
if (uniCloudSpaces.length) { |
|
return { |
|
code: code + `;import '@dcloudio/uni-cloud';`, |
|
map: null, |
|
}; |
|
} |
|
}, |
|
}; |
|
}), |
|
uniCloudPlugin(), |
|
(0, uni_cli_shared_1.uniViteInjectPlugin)('uni:cloud-inject', { |
|
exclude: [...uni_cli_shared_1.COMMON_EXCLUDE], |
|
uniCloud: ['@dcloudio/uni-cloud', 'default'], |
|
}), |
|
(0, validateFunction_1.uniValidateFunctionPlugin)(), |
|
];
|
|
|