mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
feat: extract platforms
This commit is contained in:
11
packages/webpack5/src/platforms/android.ts
Normal file
11
packages/webpack5/src/platforms/android.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { INativeScriptPlatform } from '.';
|
||||
|
||||
function getDistPath() {
|
||||
return `platforms/android/app/src/main/assets/app`;
|
||||
}
|
||||
|
||||
const AndroidPlatform: INativeScriptPlatform = {
|
||||
getDistPath,
|
||||
}
|
||||
|
||||
export default AndroidPlatform;
|
||||
47
packages/webpack5/src/platforms/index.ts
Normal file
47
packages/webpack5/src/platforms/index.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { error } from "../helpers/log";
|
||||
import { env, Platform } from "../";
|
||||
|
||||
import AndroidPlatform from "./android";
|
||||
import iOSPlatform from "./ios";
|
||||
|
||||
export interface INativeScriptPlatform {
|
||||
getEntryPath?(): string;
|
||||
getDistPath?(): string
|
||||
}
|
||||
|
||||
const platforms = {
|
||||
android: AndroidPlatform,
|
||||
ios: iOSPlatform,
|
||||
}
|
||||
|
||||
export function addPlatform(name: string, platform: INativeScriptPlatform) {
|
||||
console.log('adding platform', name, platform)
|
||||
platforms[name] = platform;
|
||||
}
|
||||
|
||||
export function getPlatform(): INativeScriptPlatform {
|
||||
return platforms[getPlatformName()]
|
||||
}
|
||||
|
||||
export function getPlatformName(): Platform {
|
||||
if (env?.android) {
|
||||
return 'android';
|
||||
}
|
||||
|
||||
if (env?.ios) {
|
||||
return 'ios';
|
||||
}
|
||||
|
||||
// support custom platforms
|
||||
if(env?.platform) {
|
||||
return env.platform;
|
||||
}
|
||||
|
||||
throw error(`
|
||||
You need to provide a target platform!
|
||||
|
||||
Available platforms: ${Object.keys(platforms).join(', ')}
|
||||
|
||||
Use --env=platform=<platform> or --env=android, --env=ios to specify the target platform.
|
||||
`);
|
||||
}
|
||||
15
packages/webpack5/src/platforms/ios.ts
Normal file
15
packages/webpack5/src/platforms/ios.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { basename } from "path";
|
||||
|
||||
import { getProjectRootPath } from "../helpers/project";
|
||||
import { INativeScriptPlatform } from '.';
|
||||
|
||||
function getDistPath() {
|
||||
const appName = basename(getProjectRootPath());
|
||||
return `platforms/ios/${appName}/app`;
|
||||
}
|
||||
|
||||
const iOSPlatform: INativeScriptPlatform = {
|
||||
getDistPath,
|
||||
}
|
||||
|
||||
export default iOSPlatform;
|
||||
Reference in New Issue
Block a user