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

wip(uts): copy assets

上级 9b2812b4
......@@ -90,5 +90,6 @@
"vue-router": "^4.0.15",
"yorkie": "^2.0.0"
},
"name": "uni-app-next"
"name": "uni-app-next",
"packageManager": "pnpm@7.0.0"
}
{
"name": "@dcloudio/uts-win32-x64-msvc",
"version": "3.0.0-alpha-3040820220424001",
"os": [
"win32"
],
"cpu": [
"x64"
],
"main": "uts.win32-x64-msvc.node",
"files": [
"uts.win32-x64-msvc.node"
],
"engines": {
"node": ">=10"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dcloudio/uni-app.git",
"directory": "packages/uts-win32-x64-msvc"
}
}
......@@ -25,4 +25,4 @@ export interface ToOptions {
};
}
export declare function runDev(target: 'kotlin' | 'swift', opts: ToOptions): void;
export declare function runBuild(target: 'kotlin' | 'swift', opts: ToOptions): void | Promise<void[]>;
export declare function runBuild(target: 'kotlin' | 'swift', opts: ToOptions): void | Promise<void>;
......@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.runBuild = exports.runDev = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const fast_glob_1 = __importDefault(require("fast-glob"));
const chokidar_1 = require("chokidar");
const api_1 = require("./api");
const utils_1 = require("./utils");
function resolveDefaultOutputDir(mode, inputDir) {
return path_1.default.resolve(inputDir, '../dist/' + mode + '/kotlin');
}
......@@ -17,7 +18,7 @@ function parseOptions(mode, opts) {
if (!(input === null || input === void 0 ? void 0 : input.dir)) {
throw new Error(`input.dir is required`);
}
if (!fs_1.default.existsSync(input.dir)) {
if (!fs_extra_1.default.existsSync(input.dir)) {
throw new Error(`${input} is not found`);
}
if (!opts.output) {
......@@ -43,24 +44,29 @@ function watchKotlin({ input: { dir: inputDir, extname }, output: { dir: outputD
outDir: outputDir,
sourceMap,
};
(0, chokidar_1.watch)('**/*' + (extname || EXTNAME), {
extname = extname || EXTNAME;
(0, chokidar_1.watch)('**/*' + extname, {
cwd: inputDir,
ignored: ['**/*.d' + (extname || EXTNAME)],
ignored: ['**/*.d' + extname],
})
.on('add', (filename) => buildKotlinFile(path_1.default.resolve(inputDir, filename), input, output))
.on('change', (filename) => buildKotlinFile(path_1.default.resolve(inputDir, filename), input, output))
.on('unlink', (filename) => {
try {
fs_1.default.unlinkSync(path_1.default.resolve(outputDir, filename));
fs_extra_1.default.unlinkSync(path_1.default.resolve(outputDir, filename));
}
catch (e) { }
})
.on('ready', () => {
copyAssets(inputDir, outputDir, extname);
});
}
function buildKotlin({ input: { dir: inputDir, extname }, output: { dir: outputDir, sourceMap, inlineSourcesContent }, }) {
const files = fast_glob_1.default.sync('**/*' + (extname || EXTNAME), {
extname = extname || EXTNAME;
const files = fast_glob_1.default.sync('**/*' + extname, {
absolute: true,
cwd: inputDir,
ignore: ['**/*.d' + (extname || EXTNAME)],
ignore: ['**/*.d' + extname],
});
const input = {
root: inputDir,
......@@ -71,10 +77,19 @@ function buildKotlin({ input: { dir: inputDir, extname }, output: { dir: outputD
sourceMap,
inlineSourcesContent: !!inlineSourcesContent,
};
return Promise.all(files.map((filename) => buildKotlinFile(filename, input, output)));
return Promise.all(files.map((filename) => buildKotlinFile(filename, input, output))).then(() => {
return copyAssets(inputDir, outputDir, extname);
});
}
function copyAssets(inputDir, outputDir, extname) {
return fs_extra_1.default.copy(inputDir, outputDir, {
filter(src) {
return path_1.default.extname(src) !== extname;
},
});
}
function buildKotlinFile(filename, input, output) {
const label = path_1.default.posix.relative(input.root, filename);
const label = (0, utils_1.normalizePath)(path_1.default.relative(input.root, filename));
const toKotlinOptions = {
input: {
...input,
......
......@@ -19,7 +19,11 @@
"dependencies": {
"cac": "6.7.9",
"chokidar": "^3.5.3",
"fast-glob": "^3.2.11"
"fast-glob": "^3.2.11",
"fs-extra": "^10.0.0"
},
"devDependencies": {
"@types/fs-extra": "^9.0.13"
},
"optionalDependencies": {
"@dcloudio/uts-darwin-arm64": "3.0.0-alpha-3040820220424001"
......
import fs from 'fs'
import path from 'path'
import fs from 'fs-extra'
import glob from 'fast-glob'
import { watch } from 'chokidar'
import { InputKotlinOptions, toKotlin } from './api'
import { OutputKotlinOptions, UtsKotlinOptions } from './types'
import { normalizePath } from './utils'
export interface ToOptions {
input: {
......@@ -76,9 +78,10 @@ function watchKotlin({
outDir: outputDir,
sourceMap,
}
watch('**/*' + (extname || EXTNAME), {
extname = extname || EXTNAME
watch('**/*' + extname, {
cwd: inputDir,
ignored: ['**/*.d' + (extname || EXTNAME)],
ignored: ['**/*.d' + extname],
})
.on('add', (filename) =>
buildKotlinFile(path.resolve(inputDir, filename), input, output)
......@@ -91,15 +94,19 @@ function watchKotlin({
fs.unlinkSync(path.resolve(outputDir, filename))
} catch (e) {}
})
.on('ready', () => {
copyAssets(inputDir, outputDir, extname!)
})
}
function buildKotlin({
input: { dir: inputDir, extname },
output: { dir: outputDir, sourceMap, inlineSourcesContent },
}: ToKotlinOptions) {
const files = glob.sync('**/*' + (extname || EXTNAME), {
extname = extname || EXTNAME
const files = glob.sync('**/*' + extname, {
absolute: true,
cwd: inputDir,
ignore: ['**/*.d' + (extname || EXTNAME)],
ignore: ['**/*.d' + extname],
})
const input: InputKotlinOptions = {
root: inputDir,
......@@ -112,7 +119,17 @@ function buildKotlin({
}
return Promise.all(
files.map((filename) => buildKotlinFile(filename, input, output))
)
).then(() => {
return copyAssets(inputDir, outputDir, extname!)
})
}
function copyAssets(inputDir: string, outputDir: string, extname: string) {
return fs.copy(inputDir, outputDir, {
filter(src) {
return path.extname(src) !== extname
},
})
}
function buildKotlinFile(
......@@ -120,7 +137,7 @@ function buildKotlinFile(
input: InputKotlinOptions,
output: OutputKotlinOptions
) {
const label = path.posix.relative(input.root, filename)
const label = normalizePath(path.relative(input.root, filename))
const toKotlinOptions: UtsKotlinOptions = {
input: {
...input,
......
import os from 'os'
export const isWindows = os.platform() === 'win32'
export function normalizePath(id: string): string {
return isWindows ? id.replace(/\\/g, '/') : id
}
......@@ -183,7 +183,6 @@ importers:
'@dcloudio/uni-h5': 3.0.0-alpha-3040820220424001
'@dcloudio/uni-i18n': 3.0.0-alpha-3040820220424001
'@dcloudio/uni-shared': 3.0.0-alpha-3040820220424001
'@dcloudio/uts': 3.0.0-alpha-3040820220424001
'@types/pako': 1.0.2
'@vue/compiler-sfc': 3.2.33
pako: ^1.0.11
......@@ -191,7 +190,6 @@ importers:
dependencies:
'@dcloudio/uni-app-vite': link:../uni-app-vite
'@dcloudio/uni-app-vue': link:../uni-app-vue
'@dcloudio/uts': link:../uts
devDependencies:
'@dcloudio/uni-cli-shared': link:../uni-cli-shared
'@dcloudio/uni-components': link:../uni-components
......@@ -770,15 +768,20 @@ importers:
packages/uts:
specifiers:
'@dcloudio/uts-darwin-arm64': 3.0.0-alpha-3040820220424001
'@types/fs-extra': ^9.0.13
cac: 6.7.9
chokidar: ^3.5.3
fast-glob: ^3.2.11
fs-extra: ^10.0.0
dependencies:
cac: 6.7.9
chokidar: 3.5.3
fast-glob: 3.2.11
fs-extra: 10.1.0
optionalDependencies:
'@dcloudio/uts-darwin-arm64': link:../uts-darwin-arm64
devDependencies:
'@types/fs-extra': 9.0.13
packages/uts-darwin-arm64:
specifiers: {}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册