Skip to content

Commit 3996350

Browse files
committed
feat: 优化文件导出
1 parent 8d17bce commit 3996350

11 files changed

Lines changed: 6005 additions & 749 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ dist
121121
.AppleDouble
122122
.LSOverride
123123

124-
# Icon must end with two
124+
# Icon must end with two
125125
Icon
126126

127127

@@ -195,3 +195,4 @@ Cargo.lock
195195
!.yarn/versions
196196

197197
*.node
198+
./index.js

Cargo.toml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ crate-type = ["cdylib"]
88

99
[dependencies]
1010
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
11-
napi = { version = "2.12.0", default-features = false, features = ["napi4"] }
12-
napi-derive = "2.12.2"
11+
napi = { version = "2", default-features = false, features = [
12+
"napi4",
13+
"serde-json",
14+
] }
15+
napi-derive = { version = "2", default-features = false }
16+
1317
serde_json = "1.0"
1418
jsonschema = "0.17"
1519
emojis = "0.6.0"
1620
console = "0.15.7"
17-
termcolor = "1.2.0"
21+
regex = "1.8.3"
1822

1923
[build-dependencies]
2024
napi-build = "2.0.1"

index.js

Lines changed: 26 additions & 260 deletions
Original file line numberDiff line numberDiff line change
@@ -1,261 +1,27 @@
1-
/* tslint:disable */
2-
/* eslint-disable */
3-
/* prettier-ignore */
4-
5-
/* auto-generated by NAPI-RS */
6-
7-
const { existsSync, readFileSync } = require('fs')
8-
const { join } = require('path')
9-
10-
const { platform, arch } = process
11-
12-
let nativeBinding = null
13-
let localFileExisted = false
14-
let loadError = null
15-
16-
function isMusl() {
17-
// For Node 10
18-
if (!process.report || typeof process.report.getReport !== 'function') {
19-
try {
20-
const lddPath = require('child_process').execSync('which ldd').toString().trim();
21-
return readFileSync(lddPath, 'utf8').includes('musl')
22-
} catch (e) {
23-
return true
24-
}
25-
} else {
26-
const { glibcVersionRuntime } = process.report.getReport().header
27-
return !glibcVersionRuntime
28-
}
29-
}
30-
31-
switch (platform) {
32-
case 'android':
33-
switch (arch) {
34-
case 'arm64':
35-
localFileExisted = existsSync(join(__dirname, 'doctor.android-arm64.node'))
36-
try {
37-
if (localFileExisted) {
38-
nativeBinding = require('./doctor.android-arm64.node')
39-
} else {
40-
nativeBinding = require('@tarojs/doctor-android-arm64')
41-
}
42-
} catch (e) {
43-
loadError = e
44-
}
45-
break
46-
case 'arm':
47-
localFileExisted = existsSync(join(__dirname, 'doctor.android-arm-eabi.node'))
48-
try {
49-
if (localFileExisted) {
50-
nativeBinding = require('./doctor.android-arm-eabi.node')
51-
} else {
52-
nativeBinding = require('@tarojs/doctor-android-arm-eabi')
53-
}
54-
} catch (e) {
55-
loadError = e
56-
}
57-
break
58-
default:
59-
throw new Error(`Unsupported architecture on Android ${arch}`)
60-
}
61-
break
62-
case 'win32':
63-
switch (arch) {
64-
case 'x64':
65-
localFileExisted = existsSync(
66-
join(__dirname, 'doctor.win32-x64-msvc.node')
67-
)
68-
try {
69-
if (localFileExisted) {
70-
nativeBinding = require('./doctor.win32-x64-msvc.node')
71-
} else {
72-
nativeBinding = require('@tarojs/doctor-win32-x64-msvc')
73-
}
74-
} catch (e) {
75-
loadError = e
76-
}
77-
break
78-
case 'ia32':
79-
localFileExisted = existsSync(
80-
join(__dirname, 'doctor.win32-ia32-msvc.node')
81-
)
82-
try {
83-
if (localFileExisted) {
84-
nativeBinding = require('./doctor.win32-ia32-msvc.node')
85-
} else {
86-
nativeBinding = require('@tarojs/doctor-win32-ia32-msvc')
87-
}
88-
} catch (e) {
89-
loadError = e
90-
}
91-
break
92-
case 'arm64':
93-
localFileExisted = existsSync(
94-
join(__dirname, 'doctor.win32-arm64-msvc.node')
95-
)
96-
try {
97-
if (localFileExisted) {
98-
nativeBinding = require('./doctor.win32-arm64-msvc.node')
99-
} else {
100-
nativeBinding = require('@tarojs/doctor-win32-arm64-msvc')
101-
}
102-
} catch (e) {
103-
loadError = e
104-
}
105-
break
106-
default:
107-
throw new Error(`Unsupported architecture on Windows: ${arch}`)
108-
}
109-
break
110-
case 'darwin':
111-
localFileExisted = existsSync(join(__dirname, 'doctor.darwin-universal.node'))
112-
try {
113-
if (localFileExisted) {
114-
nativeBinding = require('./doctor.darwin-universal.node')
115-
} else {
116-
nativeBinding = require('@tarojs/doctor-darwin-universal')
117-
}
118-
break
119-
} catch {}
120-
switch (arch) {
121-
case 'x64':
122-
localFileExisted = existsSync(join(__dirname, 'doctor.darwin-x64.node'))
123-
try {
124-
if (localFileExisted) {
125-
nativeBinding = require('./doctor.darwin-x64.node')
126-
} else {
127-
nativeBinding = require('@tarojs/doctor-darwin-x64')
128-
}
129-
} catch (e) {
130-
loadError = e
131-
}
132-
break
133-
case 'arm64':
134-
localFileExisted = existsSync(
135-
join(__dirname, 'doctor.darwin-arm64.node')
136-
)
137-
try {
138-
if (localFileExisted) {
139-
nativeBinding = require('./doctor.darwin-arm64.node')
140-
} else {
141-
nativeBinding = require('@tarojs/doctor-darwin-arm64')
142-
}
143-
} catch (e) {
144-
loadError = e
145-
}
146-
break
147-
default:
148-
throw new Error(`Unsupported architecture on macOS: ${arch}`)
149-
}
150-
break
151-
case 'freebsd':
152-
if (arch !== 'x64') {
153-
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
154-
}
155-
localFileExisted = existsSync(join(__dirname, 'doctor.freebsd-x64.node'))
156-
try {
157-
if (localFileExisted) {
158-
nativeBinding = require('./doctor.freebsd-x64.node')
159-
} else {
160-
nativeBinding = require('@tarojs/doctor-freebsd-x64')
161-
}
162-
} catch (e) {
163-
loadError = e
164-
}
165-
break
166-
case 'linux':
167-
switch (arch) {
168-
case 'x64':
169-
if (isMusl()) {
170-
localFileExisted = existsSync(
171-
join(__dirname, 'doctor.linux-x64-musl.node')
172-
)
173-
try {
174-
if (localFileExisted) {
175-
nativeBinding = require('./doctor.linux-x64-musl.node')
176-
} else {
177-
nativeBinding = require('@tarojs/doctor-linux-x64-musl')
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var js_binding_1 = require("./js-binding");
4+
exports.default = (function (ctx) {
5+
ctx.registerCommand({
6+
name: 'dd',
7+
fn: function () {
8+
var _a = ctx.paths, appPath = _a.appPath, nodeModulesPath = _a.nodeModulesPath, configPath = _a.configPath;
9+
var _b = ctx.helper, fs = _b.fs, chalk = _b.chalk, PROJECT_CONFIG = _b.PROJECT_CONFIG;
10+
if (!configPath || !fs.existsSync(configPath)) {
11+
console.log(chalk.red("\u627E\u4E0D\u5230\u9879\u76EE\u914D\u7F6E\u6587\u4EF6".concat(PROJECT_CONFIG, "\uFF0C\u8BF7\u786E\u5B9A\u5F53\u524D\u76EE\u5F55\u662F Taro \u9879\u76EE\u6839\u76EE\u5F55!")));
12+
process.exit(1);
17813
}
179-
} catch (e) {
180-
loadError = e
181-
}
182-
} else {
183-
localFileExisted = existsSync(
184-
join(__dirname, 'doctor.linux-x64-gnu.node')
185-
)
186-
try {
187-
if (localFileExisted) {
188-
nativeBinding = require('./doctor.linux-x64-gnu.node')
189-
} else {
190-
nativeBinding = require('@tarojs/doctor-linux-x64-gnu')
191-
}
192-
} catch (e) {
193-
loadError = e
194-
}
195-
}
196-
break
197-
case 'arm64':
198-
if (isMusl()) {
199-
localFileExisted = existsSync(
200-
join(__dirname, 'doctor.linux-arm64-musl.node')
201-
)
202-
try {
203-
if (localFileExisted) {
204-
nativeBinding = require('./doctor.linux-arm64-musl.node')
205-
} else {
206-
nativeBinding = require('@tarojs/doctor-linux-arm64-musl')
207-
}
208-
} catch (e) {
209-
loadError = e
210-
}
211-
} else {
212-
localFileExisted = existsSync(
213-
join(__dirname, 'doctor.linux-arm64-gnu.node')
214-
)
215-
try {
216-
if (localFileExisted) {
217-
nativeBinding = require('./doctor.linux-arm64-gnu.node')
218-
} else {
219-
nativeBinding = require('@tarojs/doctor-linux-arm64-gnu')
220-
}
221-
} catch (e) {
222-
loadError = e
223-
}
224-
}
225-
break
226-
case 'arm':
227-
localFileExisted = existsSync(
228-
join(__dirname, 'doctor.linux-arm-gnueabihf.node')
229-
)
230-
try {
231-
if (localFileExisted) {
232-
nativeBinding = require('./doctor.linux-arm-gnueabihf.node')
233-
} else {
234-
nativeBinding = require('@tarojs/doctor-linux-arm-gnueabihf')
235-
}
236-
} catch (e) {
237-
loadError = e
238-
}
239-
break
240-
default:
241-
throw new Error(`Unsupported architecture on Linux: ${arch}`)
242-
}
243-
break
244-
default:
245-
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
246-
}
247-
248-
if (!nativeBinding) {
249-
if (loadError) {
250-
throw loadError
251-
}
252-
throw new Error(`Failed to load native binding`)
253-
}
254-
255-
const { validateConfig, validatePackage, validateEnv, validateRecommend, validateEslint } = nativeBinding
256-
257-
module.exports.validateConfig = validateConfig
258-
module.exports.validatePackage = validatePackage
259-
module.exports.validateEnv = validateEnv
260-
module.exports.validateRecommend = validateRecommend
261-
module.exports.validateEslint = validateEslint
14+
var configStr = JSON.stringify(ctx.initialConfig, function (_, v) {
15+
if (typeof v === 'function') {
16+
return '__function__';
17+
}
18+
return v;
19+
});
20+
(0, js_binding_1.validateEnv)();
21+
(0, js_binding_1.validateConfig)(configStr);
22+
(0, js_binding_1.validatePackage)(appPath, nodeModulesPath);
23+
(0, js_binding_1.validateRecommend)(appPath);
24+
(0, js_binding_1.validateEslint)();
25+
},
26+
});
27+
});

index.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {
2+
validateEnv,
3+
validateConfig,
4+
validatePackage,
5+
validateRecommend,
6+
validateEslint
7+
} from './js-binding'
8+
9+
export default (ctx) => {
10+
ctx.registerCommand({
11+
name: 'dd',
12+
fn() {
13+
const { appPath, nodeModulesPath, configPath } = ctx.paths
14+
const { fs, chalk, PROJECT_CONFIG } = ctx.helper
15+
16+
if (!configPath || !fs.existsSync(configPath)) {
17+
console.log(chalk.red(`找不到项目配置文件${PROJECT_CONFIG},请确定当前目录是 Taro 项目根目录!`))
18+
process.exit(1)
19+
}
20+
const configStr = JSON.stringify(ctx.initialConfig, (_, v) => {
21+
if (typeof v === 'function') {
22+
return '__function__'
23+
}
24+
return v
25+
})
26+
validateEnv()
27+
validateConfig(configStr)
28+
validatePackage(appPath, nodeModulesPath)
29+
validateRecommend(appPath)
30+
validateEslint()
31+
},
32+
})
33+
}

index.d.ts renamed to js-binding.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/* auto-generated by NAPI-RS */
55

66
export function validateConfig(configStr: string): void
7-
export function validatePackage(appPath: string, nodeModulesPath: string, cliVersion: string): void
7+
export function validatePackage(appPath: string, nodeModulesPath: string): void
88
export function validateEnv(): void
99
export function validateRecommend(appPath: string): void
1010
export function validateEslint(): void

0 commit comments

Comments
 (0)