提交 c916f190 编写于 作者: fxy060608's avatar fxy060608

wip(uts): compiler

上级 e4ac241f
import path from 'path'
export const templateDir = path.resolve(__dirname, '../lib/template/')
export function nvueOutDir() {
return path.join(process.env.UNI_OUTPUT_DIR, '../.nvue')
return path.join(
process.env.UNI_OUTPUT_DIR,
'../.nvue',
'app' +
(process.env.UNI_APP_PLATFORM ? '-' + process.env.UNI_APP_PLATFORM : '')
)
}
......@@ -20,7 +20,7 @@ exports.default = [
version: pkg.version,
wsEndpoint: process.env.UNI_AUTOMATOR_WS_ENDPOINT,
});
fs_extra_1.default.outputFileSync(path_1.default.resolve(process.env.UNI_OUTPUT_DIR, '../.automator/' + process.env.UNI_PLATFORM + '/.automator.json'), automatorJson);
fs_extra_1.default.outputFileSync(path_1.default.resolve(process.env.UNI_OUTPUT_DIR, '../.automator/' + (0, uni_cli_shared_1.getPlatformDir)() + '/.automator.json'), automatorJson);
},
transform(code, id) {
if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
......
import fs from 'fs-extra'
import path from 'path'
import { defineUniMainJsPlugin } from '@dcloudio/uni-cli-shared'
import { defineUniMainJsPlugin, getPlatformDir } from '@dcloudio/uni-cli-shared'
export default [
defineUniMainJsPlugin((opts) => {
......@@ -21,7 +21,7 @@ export default [
fs.outputFileSync(
path.resolve(
process.env.UNI_OUTPUT_DIR,
'../.automator/' + process.env.UNI_PLATFORM + '/.automator.json'
'../.automator/' + getPlatformDir() + '/.automator.json'
),
automatorJson
)
......
......@@ -26,3 +26,10 @@ export function registerPlatform(platform: string) {
export function getPlatforms() {
return platforms
}
export function getPlatformDir() {
if (process.env.UNI_PLATFORM === 'app' && process.env.UNI_APP_PLATFORM) {
return process.env.UNI_PLATFORM + '-' + process.env.UNI_APP_PLATFORM
}
return process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM
}
......@@ -147,10 +147,6 @@ export function resolveUtsModule(
parentDir === 'uni_modules' ? 'utssdk' : '',
platform
)
// App平台仅支持 uts
if (platform === 'app-android') {
return resolveUtsFile(platformDir, ['.uts'])
}
return resolveUtsFile(platformDir)
}
}
......
......@@ -12,6 +12,7 @@ import {
TemplateChildNode,
} from '@vue/compiler-core'
import { ParserPlugin } from '@babel/parser'
import { getPlatformDir } from './platform'
export let isRunningWithYarnPnp: boolean
try {
......@@ -108,6 +109,9 @@ export function pathToGlob(
return path.posix.join(safeStr, glob)
}
export function resolveSourceMapPath(dir: string, platform: UniApp.PLATFORM) {
return path.resolve(dir, '../.sourcemap/' + platform)
export function resolveSourceMapPath() {
return path.resolve(
process.env.UNI_OUTPUT_DIR,
'../.sourcemap/' + getPlatformDir()
)
}
......@@ -1161,13 +1161,25 @@ var shims = /*#__PURE__*/Object.freeze({
getProvider: getProvider
});
const requestPayment = {
name: ks.pay ? 'pay' : 'requestPayment',
args(fromArgs, toArgs) {
if (typeof fromArgs === 'object') {
// ks.pay 服务类型 id(固定值为 '1')
if (ks.pay && !fromArgs.serviceId)
toArgs.serviceId = '1';
}
},
};
var protocols = /*#__PURE__*/Object.freeze({
__proto__: null,
redirectTo: redirectTo,
navigateTo: navigateTo,
previewImage: previewImage,
getSystemInfo: getSystemInfo,
getSystemInfoSync: getSystemInfoSync
getSystemInfoSync: getSystemInfoSync,
requestPayment: requestPayment
});
var index = initUni(shims, protocols);
......
......@@ -10,28 +10,21 @@ import {
normalizePath,
resolveSourceMapPath,
} from '@dcloudio/uni-cli-shared'
import { camelize } from '@vue/shared'
import {
genUTSPlatformResource,
getUtsCompiler,
resolveAndroidDir,
resolvePackage,
resolveUTSPlatformFile,
UTSPlatformResourceOptions,
} from './utils'
export function parseKotlinPackage(filepath: string) {
const parts = normalizePath(filepath).split('/')
const isUniModules = parts.includes('uni_modules')
const index = isUniModules
? parts.findIndex((part) => part === 'uni_modules')
: parts.findIndex((part) => part === 'utssdk')
if (index > -1) {
return (
'uts.sdk.' + (isUniModules ? 'modules.' : '') + camelize(parts[index + 1])
)
export function parseKotlinPackage(filename: string) {
const res = resolvePackage(filename)
if (!res) {
return ''
}
return ''
return 'uts.sdk.' + (res.is_uni_modules ? 'modules.' : '') + res.name
}
export async function compileKotlin(filename: string) {
......@@ -51,10 +44,7 @@ export async function compileKotlin(filename: string) {
output: {
outDir: outputDir,
package: parseKotlinPackage(filename),
sourceMap: resolveSourceMapPath(
process.env.UNI_OUTPUT_DIR,
process.env.UNI_PLATFORM
),
sourceMap: resolveSourceMapPath(),
extname: 'kt',
imports: [
'kotlinx.coroutines.async',
......
import { isInHBuilderX, resolveSourceMapPath } from '@dcloudio/uni-cli-shared'
import { genUTSPlatformResource, getUtsCompiler } from './utils'
import { genUTSPlatformResource, getUtsCompiler, resolvePackage } from './utils'
export function parseSwiftPackage(filename: string) {
return ''
const res = resolvePackage(filename)
if (!res) {
return ''
}
return 'UTSSDK' + (res.is_uni_modules ? 'Modules' : '') + res.name
}
export async function compileSwift(filename: string) {
// 开发阶段不编译
if (process.env.NODE_ENV !== 'production') {
......@@ -25,10 +30,7 @@ export async function compileSwift(filename: string) {
output: {
outDir: outputDir,
package: '',
sourceMap: resolveSourceMapPath(
process.env.UNI_OUTPUT_DIR,
process.env.UNI_PLATFORM
),
sourceMap: resolveSourceMapPath(),
extname: 'kt',
imports: [],
logFilename: true,
......
import path from 'path'
import fs from 'fs-extra'
import type { parse, bundle, UtsTarget } from '@dcloudio/uts'
import { normalizePath } from '@dcloudio/uni-cli-shared'
import { camelize } from '@vue/shared'
export function getUtsCompiler(): {
parse: typeof parse
......@@ -11,6 +13,21 @@ export function getUtsCompiler(): {
return require('@dcloudio/uts')
}
export function resolvePackage(filename: string) {
const parts = normalizePath(filename).split('/')
const isUniModules = parts.includes('uni_modules')
const index = isUniModules
? parts.findIndex((part) => part === 'uni_modules')
: parts.findIndex((part) => part === 'utssdk')
if (index > -1) {
return {
is_uni_modules: isUniModules,
name: camelize(parts[index + 1]),
}
}
}
export interface UTSPlatformResourceOptions {
inputDir: string
outputDir: string
......
......@@ -10,6 +10,7 @@ import {
isInHBuilderX,
initModulePaths,
parseScripts,
getPlatformDir,
} from '@dcloudio/uni-cli-shared'
import { CliOptions } from '.'
......@@ -115,7 +116,7 @@ export function initEnv(
process.cwd(),
'dist',
process.env.NODE_ENV === 'production' ? 'build' : 'dev',
process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM
getPlatformDir()
)
}
process.env.UNI_OUTPUT_DIR = (options as BuildOptions).outDir!
......@@ -187,9 +188,6 @@ function initUtsPlatform(options: CliOptions) {
options.platform = 'app'
}
}
if (options.platform === 'app' && !process.env.UNI_UTS_PLATFORM) {
process.env.UNI_UTS_PLATFORM = 'app-android'
}
if (options.platform === 'h5') {
process.env.UNI_UTS_PLATFORM = 'web'
}
......
......@@ -170,10 +170,7 @@ export default function uniPlugin(
enforce: 'post',
cwd: process.env.UNI_OUTPUT_DIR,
pattern: '**/*.js.map',
dest: resolveSourceMapPath(
process.env.UNI_OUTPUT_DIR,
process.env.UNI_PLATFORM
),
dest: resolveSourceMapPath(),
})
)
}
......
......@@ -35,7 +35,7 @@ export function uniCopyPlugin({
})
const platform = process.env.UNI_PLATFORM
// 非当前平台 static 目录
const platformStaticDirs = getPlatforms()
const ignorePlatformStaticDirs = getPlatforms()
.filter((p) => {
if (platform === 'app') {
return p !== 'app' && p !== 'app-plus'
......@@ -44,6 +44,15 @@ export function uniCopyPlugin({
})
.map((p) => '/' + PUBLIC_DIR + '/' + p)
if (process.env.UNI_APP_PLATFORM === 'android') {
ignorePlatformStaticDirs.push(`/${PUBLIC_DIR}/app-ios`)
} else if (process.env.UNI_APP_PLATFORM === 'ios') {
ignorePlatformStaticDirs.push(`/${PUBLIC_DIR}/app-android`)
} else {
ignorePlatformStaticDirs.push(`/${PUBLIC_DIR}/app-android`)
ignorePlatformStaticDirs.push(`/${PUBLIC_DIR}/app-ios`)
}
const targets: UniViteCopyPluginTarget[] = [
{
src: assets,
......@@ -51,7 +60,9 @@ export function uniCopyPlugin({
watchOptions: {
ignored(path: string) {
const normalizedPath = normalizePath(path)
if (platformStaticDirs.find((dir) => normalizedPath.includes(dir))) {
if (
ignorePlatformStaticDirs.find((dir) => normalizedPath.includes(dir))
) {
return fs.statSync(normalizedPath).isDirectory()
}
return false
......
......@@ -49,7 +49,7 @@ importers:
rollup-plugin-vue: ^6.0.0
semver: ^7.3.5
ts-jest: ^27.0.3
typescript: 4.8.2
typescript: ^4.8.3
vite: 2.9.14
vue: 3.2.39
vue-router: ^4.1.5
......@@ -71,7 +71,7 @@ importers:
'@rollup/plugin-strip': 2.1.0_rollup@2.75.6
'@types/jest': 27.5.2
'@types/node': 17.0.45
'@typescript-eslint/parser': 5.28.0_td6yqss6ra3qoebludh4ctrhym
'@typescript-eslint/parser': 5.28.0_dyxdave6dwjbccc5dgiifcmuza
'@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.39
'@vitejs/plugin-vue-jsx': 1.3.10
'@vue/compiler-sfc': 3.2.39
......@@ -96,11 +96,11 @@ importers:
rollup-plugin-node-builtins: 2.1.2
rollup-plugin-node-globals: 1.4.0
rollup-plugin-terser: 7.0.2_rollup@2.75.6
rollup-plugin-typescript2: 0.29.0_2tuwkp6u3necn4nd7covsj3uci
rollup-plugin-typescript2: 0.29.0_ihuqd2q7tt46edtmmxno7hxos4
rollup-plugin-vue: 6.0.0_@vue+compiler-sfc@3.2.39
semver: 7.3.7
ts-jest: 27.1.5_r3gfec6zyu5wgdxdoz6f3pvfk4
typescript: 4.8.2
ts-jest: 27.1.5_og7gk4vah7jnhf7hscifshyn74
typescript: 4.8.3
vite: 2.9.14
vue: 3.2.39
vue-router: 4.1.5_vue@3.2.39
......@@ -2958,7 +2958,7 @@ packages:
dev: true
optional: true
/@typescript-eslint/parser/5.28.0_td6yqss6ra3qoebludh4ctrhym:
/@typescript-eslint/parser/5.28.0_dyxdave6dwjbccc5dgiifcmuza:
resolution: {integrity: sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
......@@ -2970,10 +2970,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.28.0
'@typescript-eslint/types': 5.28.0
'@typescript-eslint/typescript-estree': 5.28.0_typescript@4.8.2
'@typescript-eslint/typescript-estree': 5.28.0_typescript@4.8.3
debug: 4.3.4
eslint: 7.32.0
typescript: 4.8.2
typescript: 4.8.3
transitivePeerDependencies:
- supports-color
dev: true
......@@ -2991,7 +2991,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree/5.28.0_typescript@4.8.2:
/@typescript-eslint/typescript-estree/5.28.0_typescript@4.8.3:
resolution: {integrity: sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
......@@ -3006,8 +3006,8 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.3.7
tsutils: 3.21.0_typescript@4.8.2
typescript: 4.8.2
tsutils: 3.21.0_typescript@4.8.3
typescript: 4.8.3
transitivePeerDependencies:
- supports-color
dev: true
......@@ -7543,7 +7543,7 @@ packages:
terser: 5.14.1
dev: true
/rollup-plugin-typescript2/0.29.0_2tuwkp6u3necn4nd7covsj3uci:
/rollup-plugin-typescript2/0.29.0_ihuqd2q7tt46edtmmxno7hxos4:
resolution: {integrity: sha512-YytahBSZCIjn/elFugEGQR5qTsVhxhUwGZIsA9TmrSsC88qroGo65O5HZP/TTArH2dm0vUmYWhKchhwi2wL9bw==}
peerDependencies:
rollup: '>=1.26.3'
......@@ -7555,7 +7555,7 @@ packages:
resolve: 1.17.0
rollup: 2.75.6
tslib: 2.0.1
typescript: 4.8.2
typescript: 4.8.3
dev: true
/rollup-plugin-vue/6.0.0_@vue+compiler-sfc@3.2.39:
......@@ -8045,7 +8045,7 @@ packages:
punycode: 2.1.1
dev: true
/ts-jest/27.1.5_r3gfec6zyu5wgdxdoz6f3pvfk4:
/ts-jest/27.1.5_og7gk4vah7jnhf7hscifshyn74:
resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
hasBin: true
......@@ -8076,7 +8076,7 @@ packages:
lodash.memoize: 4.1.2
make-error: 1.3.6
semver: 7.3.7
typescript: 4.8.2
typescript: 4.8.3
yargs-parser: 20.2.9
dev: true
......@@ -8092,14 +8092,14 @@ packages:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
dev: true
/tsutils/3.21.0_typescript@4.8.2:
/tsutils/3.21.0_typescript@4.8.3:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 4.8.2
typescript: 4.8.3
dev: true
/tunnel-agent/0.6.0:
......@@ -8169,8 +8169,8 @@ packages:
hasBin: true
dev: true
/typescript/4.8.2:
resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==}
/typescript/4.8.3:
resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: true
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册