@napi-rs/cli 3.0.0-alpha.4 → 3.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.mjs +0 -0
- package/dist/api/artifacts.js +32 -8
- package/dist/api/artifacts.js.map +1 -0
- package/dist/api/build.d.ts +1 -1
- package/dist/api/build.js +231 -30
- package/dist/api/build.js.map +1 -0
- package/dist/api/create-npm-dirs.js +46 -8
- package/dist/api/create-npm-dirs.js.map +1 -0
- package/dist/api/new.js +47 -20
- package/dist/api/new.js.map +1 -0
- package/dist/api/pre-publish.js +10 -7
- package/dist/api/pre-publish.js.map +1 -0
- package/dist/api/rename.js +10 -1
- package/dist/api/rename.js.map +1 -0
- package/dist/api/templates/.gitignore.d.ts +1 -1
- package/dist/api/templates/.gitignore.js +2 -0
- package/dist/api/templates/.gitignore.js.map +1 -0
- package/dist/api/templates/.npmignore.js +1 -0
- package/dist/api/templates/.npmignore.js.map +1 -0
- package/dist/api/templates/build.rs.js +1 -0
- package/dist/api/templates/build.rs.js.map +1 -0
- package/dist/api/templates/cargo.toml.js +1 -0
- package/dist/api/templates/cargo.toml.js.map +1 -0
- package/dist/api/templates/ci-template.d.ts +2 -1
- package/dist/api/templates/ci-template.js +150 -152
- package/dist/api/templates/ci-template.js.map +1 -0
- package/dist/api/templates/ci.yml.d.ts +2 -1
- package/dist/api/templates/ci.yml.js +19 -4
- package/dist/api/templates/ci.yml.js.map +1 -0
- package/dist/api/templates/index.js +1 -0
- package/dist/api/templates/index.js.map +1 -0
- package/dist/api/templates/js-binding.d.ts +1 -1
- package/dist/api/templates/js-binding.js +143 -30
- package/dist/api/templates/js-binding.js.map +1 -0
- package/dist/api/templates/lib.rs.js +2 -4
- package/dist/api/templates/lib.rs.js.map +1 -0
- package/dist/api/templates/load-wasi-template.d.ts +2 -0
- package/dist/api/templates/load-wasi-template.js +143 -0
- package/dist/api/templates/load-wasi-template.js.map +1 -0
- package/dist/api/templates/package.json.d.ts +9 -2
- package/dist/api/templates/package.json.js +53 -28
- package/dist/api/templates/package.json.js.map +1 -0
- package/dist/api/templates/wasi-worker-template.d.ts +2 -0
- package/dist/api/templates/wasi-worker-template.js +93 -0
- package/dist/api/templates/wasi-worker-template.js.map +1 -0
- package/dist/api/universalize.js +6 -5
- package/dist/api/universalize.js.map +1 -0
- package/dist/api/version.js +3 -2
- package/dist/api/version.js.map +1 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/artifacts.js +4 -4
- package/dist/commands/artifacts.js.map +1 -0
- package/dist/commands/build.js +2 -1
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/create-npm-dirs.js +1 -0
- package/dist/commands/create-npm-dirs.js.map +1 -0
- package/dist/commands/help.js +2 -2
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/new.js +15 -7
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pre-publish.js +1 -0
- package/dist/commands/pre-publish.js.map +1 -0
- package/dist/commands/rename.js +1 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/universalize.js +1 -0
- package/dist/commands/universalize.js.map +1 -0
- package/dist/commands/version.js +1 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/def/artifacts.d.ts +21 -1
- package/dist/def/artifacts.js +12 -4
- package/dist/def/artifacts.js.map +1 -0
- package/dist/def/build.d.ts +20 -2
- package/dist/def/build.js +16 -4
- package/dist/def/build.js.map +1 -0
- package/dist/def/create-npm-dirs.d.ts +10 -0
- package/dist/def/create-npm-dirs.js +6 -2
- package/dist/def/create-npm-dirs.js.map +1 -0
- package/dist/def/new.d.ts +24 -6
- package/dist/def/new.js +13 -3
- package/dist/def/new.js.map +1 -0
- package/dist/def/pre-publish.d.ts +10 -0
- package/dist/def/pre-publish.js +9 -5
- package/dist/def/pre-publish.js.map +1 -0
- package/dist/def/rename.d.ts +11 -1
- package/dist/def/rename.js +7 -3
- package/dist/def/rename.js.map +1 -0
- package/dist/def/universalize.d.ts +10 -0
- package/dist/def/universalize.js +6 -2
- package/dist/def/universalize.js.map +1 -0
- package/dist/def/version.d.ts +10 -0
- package/dist/def/version.js +6 -2
- package/dist/def/version.js.map +1 -0
- package/dist/index.cjs +6022 -8033
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/__tests__/config.spec.d.ts +1 -0
- package/dist/utils/__tests__/config.spec.js +63 -0
- package/dist/utils/__tests__/config.spec.js.map +1 -0
- package/dist/utils/__tests__/target.spec.js +1 -0
- package/dist/utils/__tests__/target.spec.js.map +1 -0
- package/dist/utils/__tests__/typegen.spec.js +9 -4
- package/dist/utils/__tests__/typegen.spec.js.map +1 -0
- package/dist/utils/__tests__/version.spec.js +1 -0
- package/dist/utils/__tests__/version.spec.js.map +1 -0
- package/dist/utils/cargo.js +2 -1
- package/dist/utils/cargo.js.map +1 -0
- package/dist/utils/ci.js +1 -0
- package/dist/utils/ci.js.map +1 -0
- package/dist/utils/config.d.ts +25 -5
- package/dist/utils/config.js +39 -6
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/log.js +1 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/metadata.js +3 -2
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/misc.d.ts +1 -1
- package/dist/utils/misc.js +4 -3
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/target.d.ts +9 -5
- package/dist/utils/target.js +16 -1
- package/dist/utils/target.js.map +1 -0
- package/dist/utils/typegen.d.ts +4 -1
- package/dist/utils/typegen.js +27 -6
- package/dist/utils/typegen.js.map +1 -0
- package/dist/utils/version.d.ts +2 -1
- package/dist/utils/version.js +13 -10
- package/dist/utils/version.js.map +1 -0
- package/package.json +50 -16
- package/src/api/artifacts.ts +85 -10
- package/src/api/build.ts +381 -32
- package/src/api/create-npm-dirs.ts +56 -8
- package/src/api/new.ts +69 -33
- package/src/api/pre-publish.ts +21 -12
- package/src/api/rename.ts +10 -1
- package/src/api/templates/.gitignore.ts +1 -0
- package/src/api/templates/ci-template.ts +151 -152
- package/src/api/templates/ci.yml.ts +19 -4
- package/src/api/templates/js-binding.ts +146 -30
- package/src/api/templates/lib.rs.ts +1 -4
- package/src/api/templates/load-wasi-template.ts +150 -0
- package/src/api/templates/package.json.ts +74 -27
- package/src/api/templates/wasi-worker-template.ts +93 -0
- package/src/api/universalize.ts +8 -5
- package/src/api/version.ts +5 -2
- package/src/commands/artifacts.ts +2 -2
- package/src/commands/build.ts +1 -1
- package/src/commands/new.ts +14 -8
- package/src/def/artifacts.ts +22 -3
- package/src/def/build.ts +32 -4
- package/src/def/create-npm-dirs.ts +9 -0
- package/src/def/new.ts +28 -3
- package/src/def/pre-publish.ts +12 -3
- package/src/def/rename.ts +11 -2
- package/src/def/universalize.ts +9 -0
- package/src/def/version.ts +9 -0
- package/src/index.ts +2 -0
- package/src/utils/__tests__/__snapshots__/config.spec.ts.md +97 -0
- package/src/utils/__tests__/__snapshots__/config.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/target.spec.ts.md +7 -0
- package/src/utils/__tests__/__snapshots__/target.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/typegen.spec.ts.md +555 -0
- package/src/utils/__tests__/__snapshots__/typegen.spec.ts.snap +0 -0
- package/src/utils/__tests__/__snapshots__/version.spec.ts.md +9 -8
- package/src/utils/__tests__/__snapshots__/version.spec.ts.snap +0 -0
- package/src/utils/__tests__/config.spec.ts +81 -0
- package/src/utils/__tests__/typegen.spec.ts +19 -4
- package/src/utils/cargo.ts +1 -1
- package/src/utils/config.ts +85 -9
- package/src/utils/metadata.ts +2 -2
- package/src/utils/misc.ts +11 -3
- package/src/utils/target.ts +23 -7
- package/src/utils/typegen.ts +30 -5
- package/src/utils/version.ts +11 -9
package/src/api/universalize.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { spawnSync } from 'child_process'
|
|
2
|
-
import { join, resolve } from 'path'
|
|
1
|
+
import { spawnSync } from 'node:child_process'
|
|
2
|
+
import { join, resolve } from 'node:path'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
applyDefaultUniversalizeOptions,
|
|
@@ -27,7 +27,10 @@ export async function universalizeBinaries(userOptions: UniversalizeOptions) {
|
|
|
27
27
|
|
|
28
28
|
const packageJsonPath = join(options.cwd, options.packageJsonPath)
|
|
29
29
|
|
|
30
|
-
const config = await readNapiConfig(
|
|
30
|
+
const config = await readNapiConfig(
|
|
31
|
+
packageJsonPath,
|
|
32
|
+
options.configPath ? resolve(options.cwd, options.configPath) : undefined,
|
|
33
|
+
)
|
|
31
34
|
|
|
32
35
|
const target = config.targets.find(
|
|
33
36
|
(t) => t.platform === process.platform && t.arch === 'universal',
|
|
@@ -40,7 +43,7 @@ export async function universalizeBinaries(userOptions: UniversalizeOptions) {
|
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
const srcFiles = UniArchsByPlatform[process.platform]?.map(
|
|
43
|
-
(arch) => `${config.binaryName}.${process.platform}-${arch}.node
|
|
46
|
+
(arch) => resolve(options.cwd, options.outputDir, `${config.binaryName}.${process.platform}-${arch}.node`),
|
|
44
47
|
)
|
|
45
48
|
|
|
46
49
|
if (!srcFiles || !universalizers[process.platform]) {
|
|
@@ -53,7 +56,7 @@ export async function universalizeBinaries(userOptions: UniversalizeOptions) {
|
|
|
53
56
|
debug(' %O', srcFiles)
|
|
54
57
|
|
|
55
58
|
const srcFileLookup = await Promise.all(
|
|
56
|
-
srcFiles.map((f) => fileExists(
|
|
59
|
+
srcFiles.map((f) => fileExists(f)),
|
|
57
60
|
)
|
|
58
61
|
|
|
59
62
|
const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i])
|
package/src/api/version.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join, resolve } from 'path'
|
|
1
|
+
import { join, resolve } from 'node:path'
|
|
2
2
|
|
|
3
3
|
import { applyDefaultVersionOptions, VersionOptions } from '../def/version.js'
|
|
4
4
|
import {
|
|
@@ -13,7 +13,10 @@ export async function version(userOptions: VersionOptions) {
|
|
|
13
13
|
const options = applyDefaultVersionOptions(userOptions)
|
|
14
14
|
const packageJsonPath = resolve(options.cwd, options.packageJsonPath)
|
|
15
15
|
|
|
16
|
-
const config = await readNapiConfig(
|
|
16
|
+
const config = await readNapiConfig(
|
|
17
|
+
packageJsonPath,
|
|
18
|
+
options.configPath ? resolve(options.cwd, options.configPath) : undefined,
|
|
19
|
+
)
|
|
17
20
|
|
|
18
21
|
for (const target of config.targets) {
|
|
19
22
|
const pkgDir = resolve(options.cwd, options.npmDir, target.platformArchABI)
|
|
@@ -8,9 +8,9 @@ export class ArtifactsCommand extends BaseArtifactsCommand {
|
|
|
8
8
|
description: 'Copy artifacts from Github Actions into specified dir',
|
|
9
9
|
examples: [
|
|
10
10
|
[
|
|
11
|
-
'$0 artifacts --dir
|
|
11
|
+
'$0 artifacts --output-dir ./artifacts --dist ./npm',
|
|
12
12
|
`Copy [binaryName].[platform].node under current dir(.) into packages under npm dir.
|
|
13
|
-
e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.node`,
|
|
13
|
+
e.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`,
|
|
14
14
|
],
|
|
15
15
|
],
|
|
16
16
|
})
|
package/src/commands/build.ts
CHANGED
package/src/commands/new.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import path from 'path'
|
|
1
|
+
import path from 'node:path'
|
|
2
2
|
|
|
3
3
|
import { Option } from 'clipanion'
|
|
4
4
|
import inquirer from 'inquirer'
|
|
@@ -16,7 +16,7 @@ import { napiEngineRequirement } from '../utils/version.js'
|
|
|
16
16
|
const debug = debugFactory('new')
|
|
17
17
|
|
|
18
18
|
export class NewCommand extends BaseNewCommand {
|
|
19
|
-
interactive = Option.Boolean('--interactive,-i',
|
|
19
|
+
interactive = Option.Boolean('--interactive,-i', true, {
|
|
20
20
|
description:
|
|
21
21
|
'Ask project basic information interactively without just using the default.',
|
|
22
22
|
})
|
|
@@ -37,9 +37,19 @@ export class NewCommand extends BaseNewCommand {
|
|
|
37
37
|
const cmdOptions = super.getOptions()
|
|
38
38
|
|
|
39
39
|
if (this.interactive) {
|
|
40
|
+
const targetPath: string = cmdOptions.path
|
|
41
|
+
? cmdOptions.path
|
|
42
|
+
: await inquirer
|
|
43
|
+
.prompt({
|
|
44
|
+
type: 'input',
|
|
45
|
+
name: 'path',
|
|
46
|
+
message: 'Target path to create the project, relative to cwd',
|
|
47
|
+
})
|
|
48
|
+
.then(({ path }) => path)
|
|
49
|
+
cmdOptions.path = targetPath
|
|
40
50
|
return {
|
|
41
51
|
...cmdOptions,
|
|
42
|
-
name: await this.fetchName(path.parse(
|
|
52
|
+
name: await this.fetchName(path.parse(targetPath).base),
|
|
43
53
|
minNodeApiVersion: await this.fetchNapiVersion(),
|
|
44
54
|
targets: await this.fetchTargets(),
|
|
45
55
|
license: await this.fetchLicense(),
|
|
@@ -94,10 +104,6 @@ export class NewCommand extends BaseNewCommand {
|
|
|
94
104
|
}
|
|
95
105
|
|
|
96
106
|
private async fetchTargets(): Promise<TargetTriple[]> {
|
|
97
|
-
if (this.enableDefaultTargets) {
|
|
98
|
-
return DEFAULT_TARGETS.concat()
|
|
99
|
-
}
|
|
100
|
-
|
|
101
107
|
if (this.enableAllTargets) {
|
|
102
108
|
return AVAILABLE_TARGETS.concat()
|
|
103
109
|
}
|
|
@@ -107,7 +113,7 @@ export class NewCommand extends BaseNewCommand {
|
|
|
107
113
|
type: 'checkbox',
|
|
108
114
|
loop: false,
|
|
109
115
|
message: 'Choose target(s) your crate will be compiled to',
|
|
110
|
-
default: DEFAULT_TARGETS,
|
|
116
|
+
default: this.enableDefaultTargets ? DEFAULT_TARGETS : [],
|
|
111
117
|
choices: AVAILABLE_TARGETS,
|
|
112
118
|
})
|
|
113
119
|
|
package/src/def/artifacts.ts
CHANGED
|
@@ -15,11 +15,15 @@ export abstract class BaseArtifactsCommand extends Command {
|
|
|
15
15
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
16
16
|
})
|
|
17
17
|
|
|
18
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
19
|
+
description: 'Path to `napi` config json file',
|
|
20
|
+
})
|
|
21
|
+
|
|
18
22
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
19
23
|
description: 'Path to `package.json`',
|
|
20
24
|
})
|
|
21
25
|
|
|
22
|
-
outputDir = Option.String('--output-dir,-o', './', {
|
|
26
|
+
outputDir = Option.String('--output-dir,-o,-d', './artifacts', {
|
|
23
27
|
description:
|
|
24
28
|
'Path to the folder where all built `.node` files put, same as `--output-dir` of build command',
|
|
25
29
|
})
|
|
@@ -28,12 +32,19 @@ export abstract class BaseArtifactsCommand extends Command {
|
|
|
28
32
|
description: 'Path to the folder where the npm packages put',
|
|
29
33
|
})
|
|
30
34
|
|
|
35
|
+
buildOutputDir?: string = Option.String('--build-output-dir', {
|
|
36
|
+
description:
|
|
37
|
+
'Path to the build output dir, only needed when targets contains `wasm32-wasi-*`',
|
|
38
|
+
})
|
|
39
|
+
|
|
31
40
|
getOptions() {
|
|
32
41
|
return {
|
|
33
42
|
cwd: this.cwd,
|
|
43
|
+
configPath: this.configPath,
|
|
34
44
|
packageJsonPath: this.packageJsonPath,
|
|
35
45
|
outputDir: this.outputDir,
|
|
36
46
|
npmDir: this.npmDir,
|
|
47
|
+
buildOutputDir: this.buildOutputDir,
|
|
37
48
|
}
|
|
38
49
|
}
|
|
39
50
|
}
|
|
@@ -48,6 +59,10 @@ export interface ArtifactsOptions {
|
|
|
48
59
|
* @default process.cwd()
|
|
49
60
|
*/
|
|
50
61
|
cwd?: string
|
|
62
|
+
/**
|
|
63
|
+
* Path to `napi` config json file
|
|
64
|
+
*/
|
|
65
|
+
configPath?: string
|
|
51
66
|
/**
|
|
52
67
|
* Path to `package.json`
|
|
53
68
|
*
|
|
@@ -57,7 +72,7 @@ export interface ArtifactsOptions {
|
|
|
57
72
|
/**
|
|
58
73
|
* Path to the folder where all built `.node` files put, same as `--output-dir` of build command
|
|
59
74
|
*
|
|
60
|
-
* @default './'
|
|
75
|
+
* @default './artifacts'
|
|
61
76
|
*/
|
|
62
77
|
outputDir?: string
|
|
63
78
|
/**
|
|
@@ -66,13 +81,17 @@ export interface ArtifactsOptions {
|
|
|
66
81
|
* @default 'npm'
|
|
67
82
|
*/
|
|
68
83
|
npmDir?: string
|
|
84
|
+
/**
|
|
85
|
+
* Path to the build output dir, only needed when targets contains `wasm32-wasi-*`
|
|
86
|
+
*/
|
|
87
|
+
buildOutputDir?: string
|
|
69
88
|
}
|
|
70
89
|
|
|
71
90
|
export function applyDefaultArtifactsOptions(options: ArtifactsOptions) {
|
|
72
91
|
return {
|
|
73
92
|
cwd: process.cwd(),
|
|
74
93
|
packageJsonPath: 'package.json',
|
|
75
|
-
outputDir: './',
|
|
94
|
+
outputDir: './artifacts',
|
|
76
95
|
npmDir: 'npm',
|
|
77
96
|
...options,
|
|
78
97
|
}
|
package/src/def/build.ts
CHANGED
|
@@ -6,7 +6,7 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
6
6
|
static paths = [['build']]
|
|
7
7
|
|
|
8
8
|
static usage = Command.Usage({
|
|
9
|
-
description: 'Build the
|
|
9
|
+
description: 'Build the NAPI-RS project',
|
|
10
10
|
})
|
|
11
11
|
|
|
12
12
|
target?: string = Option.String('--target,-t', {
|
|
@@ -23,6 +23,10 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
23
23
|
description: 'Path to `Cargo.toml`',
|
|
24
24
|
})
|
|
25
25
|
|
|
26
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
27
|
+
description: 'Path to `napi` config json file',
|
|
28
|
+
})
|
|
29
|
+
|
|
26
30
|
packageJsonPath?: string = Option.String('--package-json-path', {
|
|
27
31
|
description: 'Path to `package.json`',
|
|
28
32
|
})
|
|
@@ -47,6 +51,10 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
47
51
|
'Package name in generated js binding file. Only works with `--platform` flag',
|
|
48
52
|
})
|
|
49
53
|
|
|
54
|
+
constEnum?: boolean = Option.Boolean('--const-enum', {
|
|
55
|
+
description: 'Whether generate const enum for typescript bindings',
|
|
56
|
+
})
|
|
57
|
+
|
|
50
58
|
jsBinding?: string = Option.String('--js', {
|
|
51
59
|
description:
|
|
52
60
|
'Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output_dir`.',
|
|
@@ -106,9 +114,14 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
106
114
|
'[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`',
|
|
107
115
|
})
|
|
108
116
|
|
|
117
|
+
useNapiCross?: boolean = Option.Boolean('--use-napi-cross', {
|
|
118
|
+
description:
|
|
119
|
+
'[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.',
|
|
120
|
+
})
|
|
121
|
+
|
|
109
122
|
watch?: boolean = Option.Boolean('--watch,-w', {
|
|
110
123
|
description:
|
|
111
|
-
'watch the crate changes and build
|
|
124
|
+
'watch the crate changes and build continuously with `cargo-watch` crates',
|
|
112
125
|
})
|
|
113
126
|
|
|
114
127
|
features?: string[] = Option.Array('--features,-F', {
|
|
@@ -128,11 +141,13 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
128
141
|
target: this.target,
|
|
129
142
|
cwd: this.cwd,
|
|
130
143
|
manifestPath: this.manifestPath,
|
|
144
|
+
configPath: this.configPath,
|
|
131
145
|
packageJsonPath: this.packageJsonPath,
|
|
132
146
|
targetDir: this.targetDir,
|
|
133
147
|
outputDir: this.outputDir,
|
|
134
148
|
platform: this.platform,
|
|
135
149
|
jsPackageName: this.jsPackageName,
|
|
150
|
+
constEnum: this.constEnum,
|
|
136
151
|
jsBinding: this.jsBinding,
|
|
137
152
|
noJsBinding: this.noJsBinding,
|
|
138
153
|
dts: this.dts,
|
|
@@ -146,6 +161,7 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
146
161
|
profile: this.profile,
|
|
147
162
|
crossCompile: this.crossCompile,
|
|
148
163
|
useCross: this.useCross,
|
|
164
|
+
useNapiCross: this.useNapiCross,
|
|
149
165
|
watch: this.watch,
|
|
150
166
|
features: this.features,
|
|
151
167
|
allFeatures: this.allFeatures,
|
|
@@ -155,7 +171,7 @@ export abstract class BaseBuildCommand extends Command {
|
|
|
155
171
|
}
|
|
156
172
|
|
|
157
173
|
/**
|
|
158
|
-
* Build the
|
|
174
|
+
* Build the NAPI-RS project
|
|
159
175
|
*/
|
|
160
176
|
export interface BuildOptions {
|
|
161
177
|
/**
|
|
@@ -170,6 +186,10 @@ export interface BuildOptions {
|
|
|
170
186
|
* Path to `Cargo.toml`
|
|
171
187
|
*/
|
|
172
188
|
manifestPath?: string
|
|
189
|
+
/**
|
|
190
|
+
* Path to `napi` config json file
|
|
191
|
+
*/
|
|
192
|
+
configPath?: string
|
|
173
193
|
/**
|
|
174
194
|
* Path to `package.json`
|
|
175
195
|
*/
|
|
@@ -190,6 +210,10 @@ export interface BuildOptions {
|
|
|
190
210
|
* Package name in generated js binding file. Only works with `--platform` flag
|
|
191
211
|
*/
|
|
192
212
|
jsPackageName?: string
|
|
213
|
+
/**
|
|
214
|
+
* Whether generate const enum for typescript bindings
|
|
215
|
+
*/
|
|
216
|
+
constEnum?: boolean
|
|
193
217
|
/**
|
|
194
218
|
* Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output_dir`.
|
|
195
219
|
*/
|
|
@@ -243,7 +267,11 @@ export interface BuildOptions {
|
|
|
243
267
|
*/
|
|
244
268
|
useCross?: boolean
|
|
245
269
|
/**
|
|
246
|
-
*
|
|
270
|
+
* [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.
|
|
271
|
+
*/
|
|
272
|
+
useNapiCross?: boolean
|
|
273
|
+
/**
|
|
274
|
+
* watch the crate changes and build continuously with `cargo-watch` crates
|
|
247
275
|
*/
|
|
248
276
|
watch?: boolean
|
|
249
277
|
/**
|
|
@@ -14,6 +14,10 @@ export abstract class BaseCreateNpmDirsCommand extends Command {
|
|
|
14
14
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
18
|
+
description: 'Path to `napi` config json file',
|
|
19
|
+
})
|
|
20
|
+
|
|
17
21
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
18
22
|
description: 'Path to `package.json`',
|
|
19
23
|
})
|
|
@@ -29,6 +33,7 @@ export abstract class BaseCreateNpmDirsCommand extends Command {
|
|
|
29
33
|
getOptions() {
|
|
30
34
|
return {
|
|
31
35
|
cwd: this.cwd,
|
|
36
|
+
configPath: this.configPath,
|
|
32
37
|
packageJsonPath: this.packageJsonPath,
|
|
33
38
|
npmDir: this.npmDir,
|
|
34
39
|
dryRun: this.dryRun,
|
|
@@ -46,6 +51,10 @@ export interface CreateNpmDirsOptions {
|
|
|
46
51
|
* @default process.cwd()
|
|
47
52
|
*/
|
|
48
53
|
cwd?: string
|
|
54
|
+
/**
|
|
55
|
+
* Path to `napi` config json file
|
|
56
|
+
*/
|
|
57
|
+
configPath?: string
|
|
49
58
|
/**
|
|
50
59
|
* Path to `package.json`
|
|
51
60
|
*
|
package/src/def/new.ts
CHANGED
|
@@ -10,7 +10,7 @@ export abstract class BaseNewCommand extends Command {
|
|
|
10
10
|
description: 'Create a new project with pre-configured boilerplate',
|
|
11
11
|
})
|
|
12
12
|
|
|
13
|
-
$$path = Option.String({ required:
|
|
13
|
+
$$path = Option.String({ required: false })
|
|
14
14
|
|
|
15
15
|
$$name?: string = Option.String('--name,-n', {
|
|
16
16
|
description:
|
|
@@ -22,6 +22,10 @@ export abstract class BaseNewCommand extends Command {
|
|
|
22
22
|
description: 'The minimum Node-API version to support',
|
|
23
23
|
})
|
|
24
24
|
|
|
25
|
+
packageManager = Option.String('--package-manager', 'yarn', {
|
|
26
|
+
description: 'The package manager to use. Only support yarn 4.x for now.',
|
|
27
|
+
})
|
|
28
|
+
|
|
25
29
|
license = Option.String('--license,-l', 'MIT', {
|
|
26
30
|
description: 'License for open-sourced project',
|
|
27
31
|
})
|
|
@@ -47,6 +51,11 @@ export abstract class BaseNewCommand extends Command {
|
|
|
47
51
|
description: 'Whether generate preconfigured GitHub Actions workflow',
|
|
48
52
|
})
|
|
49
53
|
|
|
54
|
+
testFramework = Option.String('--test-framework', 'ava', {
|
|
55
|
+
description:
|
|
56
|
+
'The JavaScript test framework to use, only support `ava` for now',
|
|
57
|
+
})
|
|
58
|
+
|
|
50
59
|
dryRun = Option.Boolean('--dry-run', false, {
|
|
51
60
|
description: 'Whether to run the command in dry-run mode',
|
|
52
61
|
})
|
|
@@ -56,12 +65,14 @@ export abstract class BaseNewCommand extends Command {
|
|
|
56
65
|
path: this.$$path,
|
|
57
66
|
name: this.$$name,
|
|
58
67
|
minNodeApiVersion: this.minNodeApiVersion,
|
|
68
|
+
packageManager: this.packageManager,
|
|
59
69
|
license: this.license,
|
|
60
70
|
targets: this.targets,
|
|
61
71
|
enableDefaultTargets: this.enableDefaultTargets,
|
|
62
72
|
enableAllTargets: this.enableAllTargets,
|
|
63
73
|
enableTypeDef: this.enableTypeDef,
|
|
64
74
|
enableGithubActions: this.enableGithubActions,
|
|
75
|
+
testFramework: this.testFramework,
|
|
65
76
|
dryRun: this.dryRun,
|
|
66
77
|
}
|
|
67
78
|
}
|
|
@@ -72,9 +83,9 @@ export abstract class BaseNewCommand extends Command {
|
|
|
72
83
|
*/
|
|
73
84
|
export interface NewOptions {
|
|
74
85
|
/**
|
|
75
|
-
* The path where the
|
|
86
|
+
* The path where the NAPI-RS project will be created.
|
|
76
87
|
*/
|
|
77
|
-
path
|
|
88
|
+
path?: string
|
|
78
89
|
/**
|
|
79
90
|
* The name of the project, default to the name of the directory if not provided
|
|
80
91
|
*/
|
|
@@ -85,6 +96,12 @@ export interface NewOptions {
|
|
|
85
96
|
* @default 4
|
|
86
97
|
*/
|
|
87
98
|
minNodeApiVersion?: number
|
|
99
|
+
/**
|
|
100
|
+
* The package manager to use. Only support yarn 4.x for now.
|
|
101
|
+
*
|
|
102
|
+
* @default 'yarn'
|
|
103
|
+
*/
|
|
104
|
+
packageManager?: string
|
|
88
105
|
/**
|
|
89
106
|
* License for open-sourced project
|
|
90
107
|
*
|
|
@@ -121,6 +138,12 @@ export interface NewOptions {
|
|
|
121
138
|
* @default true
|
|
122
139
|
*/
|
|
123
140
|
enableGithubActions?: boolean
|
|
141
|
+
/**
|
|
142
|
+
* The JavaScript test framework to use, only support `ava` for now
|
|
143
|
+
*
|
|
144
|
+
* @default 'ava'
|
|
145
|
+
*/
|
|
146
|
+
testFramework?: string
|
|
124
147
|
/**
|
|
125
148
|
* Whether to run the command in dry-run mode
|
|
126
149
|
*
|
|
@@ -132,12 +155,14 @@ export interface NewOptions {
|
|
|
132
155
|
export function applyDefaultNewOptions(options: NewOptions) {
|
|
133
156
|
return {
|
|
134
157
|
minNodeApiVersion: 4,
|
|
158
|
+
packageManager: 'yarn',
|
|
135
159
|
license: 'MIT',
|
|
136
160
|
targets: [],
|
|
137
161
|
enableDefaultTargets: true,
|
|
138
162
|
enableAllTargets: false,
|
|
139
163
|
enableTypeDef: true,
|
|
140
164
|
enableGithubActions: true,
|
|
165
|
+
testFramework: 'ava',
|
|
141
166
|
dryRun: false,
|
|
142
167
|
...options,
|
|
143
168
|
}
|
package/src/def/pre-publish.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { Command, Option } from 'clipanion'
|
|
4
4
|
|
|
5
5
|
export abstract class BasePrePublishCommand extends Command {
|
|
6
|
-
static paths = [['pre-publish']]
|
|
6
|
+
static paths = [['pre-publish'], ['prepublish']]
|
|
7
7
|
|
|
8
8
|
static usage = Command.Usage({
|
|
9
9
|
description:
|
|
@@ -15,15 +15,19 @@ export abstract class BasePrePublishCommand extends Command {
|
|
|
15
15
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
16
16
|
})
|
|
17
17
|
|
|
18
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
19
|
+
description: 'Path to `napi` config json file',
|
|
20
|
+
})
|
|
21
|
+
|
|
18
22
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
19
23
|
description: 'Path to `package.json`',
|
|
20
24
|
})
|
|
21
25
|
|
|
22
|
-
npmDir = Option.String('--npm-dir', 'npm', {
|
|
26
|
+
npmDir = Option.String('--npm-dir,-p', 'npm', {
|
|
23
27
|
description: 'Path to the folder where the npm packages put',
|
|
24
28
|
})
|
|
25
29
|
|
|
26
|
-
tagStyle = Option.String('--tag-style', 'lerna', {
|
|
30
|
+
tagStyle = Option.String('--tag-style,--tagstyle,-t', 'lerna', {
|
|
27
31
|
description: 'git tag style, `npm` or `lerna`',
|
|
28
32
|
})
|
|
29
33
|
|
|
@@ -46,6 +50,7 @@ export abstract class BasePrePublishCommand extends Command {
|
|
|
46
50
|
getOptions() {
|
|
47
51
|
return {
|
|
48
52
|
cwd: this.cwd,
|
|
53
|
+
configPath: this.configPath,
|
|
49
54
|
packageJsonPath: this.packageJsonPath,
|
|
50
55
|
npmDir: this.npmDir,
|
|
51
56
|
tagStyle: this.tagStyle,
|
|
@@ -67,6 +72,10 @@ export interface PrePublishOptions {
|
|
|
67
72
|
* @default process.cwd()
|
|
68
73
|
*/
|
|
69
74
|
cwd?: string
|
|
75
|
+
/**
|
|
76
|
+
* Path to `napi` config json file
|
|
77
|
+
*/
|
|
78
|
+
configPath?: string
|
|
70
79
|
/**
|
|
71
80
|
* Path to `package.json`
|
|
72
81
|
*
|
package/src/def/rename.ts
CHANGED
|
@@ -6,7 +6,7 @@ export abstract class BaseRenameCommand extends Command {
|
|
|
6
6
|
static paths = [['rename']]
|
|
7
7
|
|
|
8
8
|
static usage = Command.Usage({
|
|
9
|
-
description: 'Rename the
|
|
9
|
+
description: 'Rename the NAPI-RS project',
|
|
10
10
|
})
|
|
11
11
|
|
|
12
12
|
cwd = Option.String('--cwd', process.cwd(), {
|
|
@@ -14,6 +14,10 @@ export abstract class BaseRenameCommand extends Command {
|
|
|
14
14
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
18
|
+
description: 'Path to `napi` config json file',
|
|
19
|
+
})
|
|
20
|
+
|
|
17
21
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
18
22
|
description: 'Path to `package.json`',
|
|
19
23
|
})
|
|
@@ -49,6 +53,7 @@ export abstract class BaseRenameCommand extends Command {
|
|
|
49
53
|
getOptions() {
|
|
50
54
|
return {
|
|
51
55
|
cwd: this.cwd,
|
|
56
|
+
configPath: this.configPath,
|
|
52
57
|
packageJsonPath: this.packageJsonPath,
|
|
53
58
|
npmDir: this.npmDir,
|
|
54
59
|
name: this.$$name,
|
|
@@ -62,7 +67,7 @@ export abstract class BaseRenameCommand extends Command {
|
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
/**
|
|
65
|
-
* Rename the
|
|
70
|
+
* Rename the NAPI-RS project
|
|
66
71
|
*/
|
|
67
72
|
export interface RenameOptions {
|
|
68
73
|
/**
|
|
@@ -71,6 +76,10 @@ export interface RenameOptions {
|
|
|
71
76
|
* @default process.cwd()
|
|
72
77
|
*/
|
|
73
78
|
cwd?: string
|
|
79
|
+
/**
|
|
80
|
+
* Path to `napi` config json file
|
|
81
|
+
*/
|
|
82
|
+
configPath?: string
|
|
74
83
|
/**
|
|
75
84
|
* Path to `package.json`
|
|
76
85
|
*
|
package/src/def/universalize.ts
CHANGED
|
@@ -14,6 +14,10 @@ export abstract class BaseUniversalizeCommand extends Command {
|
|
|
14
14
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
18
|
+
description: 'Path to `napi` config json file',
|
|
19
|
+
})
|
|
20
|
+
|
|
17
21
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
18
22
|
description: 'Path to `package.json`',
|
|
19
23
|
})
|
|
@@ -26,6 +30,7 @@ export abstract class BaseUniversalizeCommand extends Command {
|
|
|
26
30
|
getOptions() {
|
|
27
31
|
return {
|
|
28
32
|
cwd: this.cwd,
|
|
33
|
+
configPath: this.configPath,
|
|
29
34
|
packageJsonPath: this.packageJsonPath,
|
|
30
35
|
outputDir: this.outputDir,
|
|
31
36
|
}
|
|
@@ -42,6 +47,10 @@ export interface UniversalizeOptions {
|
|
|
42
47
|
* @default process.cwd()
|
|
43
48
|
*/
|
|
44
49
|
cwd?: string
|
|
50
|
+
/**
|
|
51
|
+
* Path to `napi` config json file
|
|
52
|
+
*/
|
|
53
|
+
configPath?: string
|
|
45
54
|
/**
|
|
46
55
|
* Path to `package.json`
|
|
47
56
|
*
|
package/src/def/version.ts
CHANGED
|
@@ -14,6 +14,10 @@ export abstract class BaseVersionCommand extends Command {
|
|
|
14
14
|
'The working directory of where napi command will be executed in, all other paths options are relative to this path',
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
+
configPath?: string = Option.String('--config-path,-c', {
|
|
18
|
+
description: 'Path to `napi` config json file',
|
|
19
|
+
})
|
|
20
|
+
|
|
17
21
|
packageJsonPath = Option.String('--package-json-path', 'package.json', {
|
|
18
22
|
description: 'Path to `package.json`',
|
|
19
23
|
})
|
|
@@ -25,6 +29,7 @@ export abstract class BaseVersionCommand extends Command {
|
|
|
25
29
|
getOptions() {
|
|
26
30
|
return {
|
|
27
31
|
cwd: this.cwd,
|
|
32
|
+
configPath: this.configPath,
|
|
28
33
|
packageJsonPath: this.packageJsonPath,
|
|
29
34
|
npmDir: this.npmDir,
|
|
30
35
|
}
|
|
@@ -41,6 +46,10 @@ export interface VersionOptions {
|
|
|
41
46
|
* @default process.cwd()
|
|
42
47
|
*/
|
|
43
48
|
cwd?: string
|
|
49
|
+
/**
|
|
50
|
+
* Path to `napi` config json file
|
|
51
|
+
*/
|
|
52
|
+
configPath?: string
|
|
44
53
|
/**
|
|
45
54
|
* Path to `package.json`
|
|
46
55
|
*
|