create-react-native-library 0.62.0 → 0.62.2
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/bin/create-react-native-library +1 -1
- package/lib/package.json +69 -0
- package/lib/src/constants.d.ts +5 -0
- package/lib/src/constants.js +6 -0
- package/lib/src/constants.js.map +1 -0
- package/lib/src/exampleApp/dependencies.d.ts +8 -0
- package/lib/src/exampleApp/dependencies.js +34 -0
- package/lib/src/exampleApp/dependencies.js.map +1 -0
- package/lib/src/exampleApp/generateExampleApp.d.ts +6 -0
- package/lib/src/exampleApp/generateExampleApp.js +309 -0
- package/lib/src/exampleApp/generateExampleApp.js.map +1 -0
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.js +137 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/inform.d.ts +10 -0
- package/lib/src/inform.js +56 -0
- package/lib/src/inform.js.map +1 -0
- package/lib/src/prompt.d.ts +130 -0
- package/lib/src/prompt.js +349 -0
- package/lib/src/prompt.js.map +1 -0
- package/lib/src/template.d.ts +44 -0
- package/lib/src/template.js +279 -0
- package/lib/src/template.js.map +1 -0
- package/lib/src/utils/assert.d.ts +1 -0
- package/lib/src/utils/assert.js +17 -0
- package/lib/src/utils/assert.js.map +1 -0
- package/lib/src/utils/configureTools.d.ts +43 -0
- package/lib/src/utils/configureTools.js +122 -0
- package/lib/src/utils/configureTools.js.map +1 -0
- package/lib/src/utils/createMetadata.d.ts +4 -0
- package/lib/src/utils/createMetadata.js +23 -0
- package/lib/src/utils/createMetadata.js.map +1 -0
- package/lib/src/utils/initialCommit.d.ts +1 -0
- package/lib/src/utils/initialCommit.js +24 -0
- package/lib/src/utils/initialCommit.js.map +1 -0
- package/lib/src/utils/local.d.ts +5 -0
- package/lib/src/utils/local.js +49 -0
- package/lib/src/utils/local.js.map +1 -0
- package/lib/src/utils/packageManager.d.ts +1 -0
- package/lib/src/utils/packageManager.js +8 -0
- package/lib/src/utils/packageManager.js.map +1 -0
- package/lib/src/utils/resolveNpmPackageVersion.d.ts +1 -0
- package/lib/src/utils/resolveNpmPackageVersion.js +20 -0
- package/lib/src/utils/resolveNpmPackageVersion.js.map +1 -0
- package/lib/src/utils/sortObjectKeys.d.ts +1 -0
- package/lib/src/utils/sortObjectKeys.js +9 -0
- package/lib/src/utils/sortObjectKeys.js.map +1 -0
- package/lib/src/utils/spawn.d.ts +2 -0
- package/lib/src/utils/spawn.js +26 -0
- package/lib/src/utils/spawn.js.map +1 -0
- package/package.json +12 -10
- package/templates/common/$package.json +1 -1
- package/templates/common/tsconfig.json +0 -2
- package/templates/common-local/$package.json +13 -1
- package/templates/native-common/android/build.gradle +33 -43
- package/templates/tools/eslint/~package.json +3 -3
- package/templates/tools/jest/~package.json +2 -2
- package/templates/tools/lefthook/~package.json +3 -3
- package/templates/tools/release-it/~package.json +2 -2
- package/templates/tools/turborepo/~package.json +1 -1
- package/templates/tools/vite/example/~package.json +1 -1
- package/templates/tools/vite/~package.json +1 -1
- package/lib/constants.js +0 -12
- package/lib/constants.js.map +0 -1
- package/lib/exampleApp/dependencies.js +0 -34
- package/lib/exampleApp/dependencies.js.map +0 -1
- package/lib/exampleApp/generateExampleApp.js +0 -249
- package/lib/exampleApp/generateExampleApp.js.map +0 -1
- package/lib/index.js +0 -130
- package/lib/index.js.map +0 -1
- package/lib/inform.js +0 -72
- package/lib/inform.js.map +0 -1
- package/lib/prompt.js +0 -305
- package/lib/prompt.js.map +0 -1
- package/lib/template.js +0 -258
- package/lib/template.js.map +0 -1
- package/lib/utils/assert.js +0 -22
- package/lib/utils/assert.js.map +0 -1
- package/lib/utils/configureTools.js +0 -137
- package/lib/utils/configureTools.js.map +0 -1
- package/lib/utils/createMetadata.js +0 -17
- package/lib/utils/createMetadata.js.map +0 -1
- package/lib/utils/initialCommit.js +0 -37
- package/lib/utils/initialCommit.js.map +0 -1
- package/lib/utils/local.js +0 -55
- package/lib/utils/local.js.map +0 -1
- package/lib/utils/packageManager.js +0 -13
- package/lib/utils/packageManager.js.map +0 -1
- package/lib/utils/resolveNpmPackageVersion.js +0 -22
- package/lib/utils/resolveNpmPackageVersion.js.map +0 -1
- package/lib/utils/sortObjectKeys.js +0 -15
- package/lib/utils/sortObjectKeys.js.map +0 -1
- package/lib/utils/spawn.js +0 -33
- package/lib/utils/spawn.js.map +0 -1
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import ejs from 'ejs';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
const BINARIES = [
|
|
5
|
+
/(gradlew|\.(jar|keystore|png|jpg|gif))$/,
|
|
6
|
+
/\$\.yarn(?![a-z])/,
|
|
7
|
+
];
|
|
8
|
+
const COMMON_FILES = path.resolve(import.meta.dirname, '../../templates/common');
|
|
9
|
+
const COMMON_LOCAL_FILES = path.resolve(import.meta.dirname, '../../templates/common-local');
|
|
10
|
+
const EXAMPLE_COMMON_FILES = path.resolve(import.meta.dirname, '../../templates/example-common');
|
|
11
|
+
const EXAMPLE_BARE_FILES = path.resolve(import.meta.dirname, '../../templates/example-bare');
|
|
12
|
+
const EXAMPLE_MODULE_NEW_FILES = path.resolve(import.meta.dirname, '../../templates/example-module-new');
|
|
13
|
+
const EXAMPLE_VIEW_FILES = path.resolve(import.meta.dirname, '../../templates/example-view');
|
|
14
|
+
const EXAMPLE_EXPO_FILES = path.resolve(import.meta.dirname, '../../templates/example-expo');
|
|
15
|
+
const JS_FILES = path.resolve(import.meta.dirname, '../../templates/js-library');
|
|
16
|
+
const JS_VIEW_FILES = path.resolve(import.meta.dirname, '../../templates/js-view');
|
|
17
|
+
const NATIVE_COMMON_FILES = path.resolve(import.meta.dirname, '../../templates/native-common');
|
|
18
|
+
const EXAMPLE_NATIVE_COMMON_FILES = path.resolve(import.meta.dirname, '../../templates/example-native-common');
|
|
19
|
+
const NITRO_COMMON_FILES = path.resolve(import.meta.dirname, '../../templates/nitro-common');
|
|
20
|
+
const CPP_FILES = path.resolve(import.meta.dirname, '../../templates/cpp-library');
|
|
21
|
+
const NATIVE_FILES = {
|
|
22
|
+
module_new: path.resolve(import.meta.dirname, '../../templates/native-library-new'),
|
|
23
|
+
view_new: path.resolve(import.meta.dirname, '../../templates/native-view-new'),
|
|
24
|
+
module_nitro: path.resolve(import.meta.dirname, '../../templates/nitro-module'),
|
|
25
|
+
view_nitro: path.resolve(import.meta.dirname, '../../templates/nitro-view'),
|
|
26
|
+
};
|
|
27
|
+
const OBJC_FILES = {
|
|
28
|
+
module_common: path.resolve(import.meta.dirname, '../../templates/objc-library'),
|
|
29
|
+
view_new: path.resolve(import.meta.dirname, '../../templates/objc-view-new'),
|
|
30
|
+
};
|
|
31
|
+
const KOTLIN_FILES = {
|
|
32
|
+
module_new: path.resolve(import.meta.dirname, '../../templates/kotlin-library-new'),
|
|
33
|
+
view_new: path.resolve(import.meta.dirname, '../../templates/kotlin-view-new'),
|
|
34
|
+
};
|
|
35
|
+
export function generateTemplateConfiguration({ versions, basename, answers, }) {
|
|
36
|
+
const { slug, languages, type } = answers;
|
|
37
|
+
let { authorName, authorEmail, authorUrl, repoUrl } = answers;
|
|
38
|
+
if (answers.local) {
|
|
39
|
+
authorName = '';
|
|
40
|
+
authorEmail = '';
|
|
41
|
+
authorUrl = '';
|
|
42
|
+
repoUrl = '';
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (authorName == null) {
|
|
46
|
+
throw new Error('Missing required option: --author-name');
|
|
47
|
+
}
|
|
48
|
+
if (authorEmail == null) {
|
|
49
|
+
throw new Error('Missing required option: --author-email');
|
|
50
|
+
}
|
|
51
|
+
if (authorUrl == null) {
|
|
52
|
+
throw new Error('Missing required option: --author-url');
|
|
53
|
+
}
|
|
54
|
+
if (repoUrl == null) {
|
|
55
|
+
throw new Error('Missing required option: --repo-url');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const project = slug.replace(/^(react-native-|@[^/]+\/)/, '');
|
|
59
|
+
let namespace;
|
|
60
|
+
if (slug.startsWith('@') && slug.includes('/')) {
|
|
61
|
+
namespace = slug
|
|
62
|
+
.split('/')[0]
|
|
63
|
+
?.replace(/[^a-z0-9]/g, '')
|
|
64
|
+
.toLowerCase();
|
|
65
|
+
}
|
|
66
|
+
// Create a package identifier with specified namespace when possible
|
|
67
|
+
const pack = `${namespace ? `${namespace}.` : ''}${project
|
|
68
|
+
.replace(/[^a-z0-9]/g, '')
|
|
69
|
+
.toLowerCase()}`;
|
|
70
|
+
return {
|
|
71
|
+
versions,
|
|
72
|
+
project: {
|
|
73
|
+
slug,
|
|
74
|
+
description: answers.description,
|
|
75
|
+
name: /^[A-Z]/.test(basename) && /^[a-z0-9]+$/i.test(basename)
|
|
76
|
+
? // If the project name is already in PascalCase, use it as-is
|
|
77
|
+
basename
|
|
78
|
+
: // Otherwise, convert it to PascalCase and remove any non-alphanumeric characters
|
|
79
|
+
`${project.charAt(0).toUpperCase()}${project
|
|
80
|
+
.replace(/[^a-z0-9](\w)/g, (_, $1) => $1.toUpperCase())
|
|
81
|
+
.slice(1)}`,
|
|
82
|
+
package: pack,
|
|
83
|
+
package_dir: pack.replace(/\./g, path.sep),
|
|
84
|
+
package_cpp: pack.replace(/\./g, '_'),
|
|
85
|
+
identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),
|
|
86
|
+
native: languages !== 'js',
|
|
87
|
+
cpp: languages === 'cpp',
|
|
88
|
+
swift: languages === 'kotlin-swift',
|
|
89
|
+
viewConfig: getViewConfig(type),
|
|
90
|
+
moduleConfig: getModuleConfig(type),
|
|
91
|
+
},
|
|
92
|
+
author: {
|
|
93
|
+
name: authorName,
|
|
94
|
+
email: authorEmail,
|
|
95
|
+
url: authorUrl,
|
|
96
|
+
},
|
|
97
|
+
repo: repoUrl,
|
|
98
|
+
example: answers.example,
|
|
99
|
+
tools: answers.tools ?? [],
|
|
100
|
+
year: new Date().getFullYear(),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function getModuleConfig(projectType) {
|
|
104
|
+
switch (projectType) {
|
|
105
|
+
case 'nitro-module':
|
|
106
|
+
return 'nitro-modules';
|
|
107
|
+
case 'turbo-module':
|
|
108
|
+
return 'turbo-modules';
|
|
109
|
+
case 'fabric-view':
|
|
110
|
+
case 'library':
|
|
111
|
+
case 'nitro-view':
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function getViewConfig(projectType) {
|
|
116
|
+
switch (projectType) {
|
|
117
|
+
case 'fabric-view':
|
|
118
|
+
return 'fabric-view';
|
|
119
|
+
case 'nitro-view':
|
|
120
|
+
return 'nitro-view';
|
|
121
|
+
case 'nitro-module':
|
|
122
|
+
case 'turbo-module':
|
|
123
|
+
case 'library':
|
|
124
|
+
default:
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export async function applyTemplates(answers, config, folder) {
|
|
129
|
+
const { local } = answers;
|
|
130
|
+
if (local) {
|
|
131
|
+
await applyTemplate(config, COMMON_LOCAL_FILES, folder);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
await applyTemplate(config, COMMON_FILES, folder);
|
|
135
|
+
if (config.example != null) {
|
|
136
|
+
await applyTemplate(config, EXAMPLE_COMMON_FILES, folder);
|
|
137
|
+
if (config.project.viewConfig !== null) {
|
|
138
|
+
await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (answers.languages === 'js') {
|
|
146
|
+
await applyTemplate(config, JS_FILES, folder);
|
|
147
|
+
if (config.example != null) {
|
|
148
|
+
if (config.example === 'expo') {
|
|
149
|
+
await applyTemplate(config, EXAMPLE_EXPO_FILES, folder);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
await applyTemplate(config, EXAMPLE_BARE_FILES, folder);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
if (answers.languages === 'cpp') {
|
|
158
|
+
if (config.example === 'expo') {
|
|
159
|
+
await applyTemplate(config, EXAMPLE_EXPO_FILES, folder);
|
|
160
|
+
if (config.project.native) {
|
|
161
|
+
await applyTemplate(config, EXAMPLE_NATIVE_COMMON_FILES, folder);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else if (config.example != null) {
|
|
165
|
+
await applyTemplate(config, EXAMPLE_BARE_FILES, folder);
|
|
166
|
+
if (config.project.native) {
|
|
167
|
+
await applyTemplate(config, EXAMPLE_NATIVE_COMMON_FILES, folder);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
await applyTemplate(config, NATIVE_FILES['module_new'], folder);
|
|
171
|
+
await applyTemplate(config, CPP_FILES, folder);
|
|
172
|
+
if (config.example === 'expo' || config.tools.includes('vite')) {
|
|
173
|
+
await applyTemplate(config, JS_FILES, folder);
|
|
174
|
+
}
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
await applyTemplate(config, NATIVE_COMMON_FILES, folder);
|
|
178
|
+
if (config.example === 'expo') {
|
|
179
|
+
await applyTemplate(config, EXAMPLE_EXPO_FILES, folder);
|
|
180
|
+
if (config.project.native) {
|
|
181
|
+
await applyTemplate(config, EXAMPLE_NATIVE_COMMON_FILES, folder);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if (config.example != null) {
|
|
185
|
+
await applyTemplate(config, EXAMPLE_BARE_FILES, folder);
|
|
186
|
+
if (config.project.native) {
|
|
187
|
+
await applyTemplate(config, EXAMPLE_NATIVE_COMMON_FILES, folder);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (config.project.moduleConfig === 'nitro-modules') {
|
|
191
|
+
await applyTemplate(config, NITRO_COMMON_FILES, folder);
|
|
192
|
+
await applyTemplate(config, NATIVE_FILES['module_nitro'], folder);
|
|
193
|
+
if (config.example === 'expo' || config.tools.includes('vite')) {
|
|
194
|
+
await applyTemplate(config, JS_FILES, folder);
|
|
195
|
+
}
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (config.project.viewConfig === 'nitro-view') {
|
|
199
|
+
await applyTemplate(config, NITRO_COMMON_FILES, folder);
|
|
200
|
+
await applyTemplate(config, NATIVE_FILES['view_nitro'], folder);
|
|
201
|
+
if (config.example === 'expo' || config.tools.includes('vite')) {
|
|
202
|
+
await applyTemplate(config, JS_VIEW_FILES, folder);
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (config.project.moduleConfig !== null) {
|
|
207
|
+
await applyTemplate(config, NATIVE_FILES[`module_new`], folder);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
await applyTemplate(config, NATIVE_FILES[`view_new`], folder);
|
|
211
|
+
}
|
|
212
|
+
if (config.project.moduleConfig !== null) {
|
|
213
|
+
await applyTemplate(config, OBJC_FILES[`module_common`], folder);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
await applyTemplate(config, OBJC_FILES[`view_new`], folder);
|
|
217
|
+
}
|
|
218
|
+
const templateType = `${config.project.moduleConfig !== null ? 'module' : 'view'}_new`;
|
|
219
|
+
await applyTemplate(config, KOTLIN_FILES[templateType], folder);
|
|
220
|
+
if (config.example === 'expo' || config.tools.includes('vite')) {
|
|
221
|
+
if (config.project.viewConfig !== null) {
|
|
222
|
+
await applyTemplate(config, JS_VIEW_FILES, folder);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
await applyTemplate(config, JS_FILES, folder);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* This copies the template files and renders them via ejs
|
|
232
|
+
*/
|
|
233
|
+
export async function applyTemplate(config, source, destination) {
|
|
234
|
+
await fs.mkdirp(destination);
|
|
235
|
+
const files = await fs.readdir(source);
|
|
236
|
+
for (const f of files) {
|
|
237
|
+
if (f.startsWith('~')) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
let name;
|
|
241
|
+
try {
|
|
242
|
+
name = ejs.render(f.replace(/^\$/, ''), config, {
|
|
243
|
+
openDelimiter: '{',
|
|
244
|
+
closeDelimiter: '}',
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
throw new Error(`Failed to render template file name: ${f}`, {
|
|
249
|
+
cause: e,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
const target = path.join(destination, name);
|
|
253
|
+
const file = path.join(source, f);
|
|
254
|
+
const stats = await fs.stat(file);
|
|
255
|
+
if (stats.isDirectory()) {
|
|
256
|
+
await applyTemplate(config, file, target);
|
|
257
|
+
}
|
|
258
|
+
else if (!BINARIES.some((r) => r.test(file))) {
|
|
259
|
+
const content = await fs.readFile(file, 'utf8');
|
|
260
|
+
let result;
|
|
261
|
+
try {
|
|
262
|
+
result = ejs
|
|
263
|
+
.render(content, config)
|
|
264
|
+
// Make sure that line endings are 'lf' (Unix style)
|
|
265
|
+
.replace(/\r\n/g, '\n');
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
throw new Error(`Failed to render template file content: ${f}`, {
|
|
269
|
+
cause: e,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
await fs.writeFile(target, result);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
await fs.copyFile(file, target);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function assertNpxExists(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import kleur from 'kleur';
|
|
2
|
+
import { spawn } from "./spawn.js";
|
|
3
|
+
export async function assertNpxExists() {
|
|
4
|
+
try {
|
|
5
|
+
await spawn('npx', ['--help']);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
// @ts-expect-error: TS doesn't know about `code`
|
|
9
|
+
if (error != null && error.code === 'ENOENT') {
|
|
10
|
+
throw new Error(`Couldn't find ${kleur.blue('npx')}! Please install it by running ${kleur.blue('npm install -g npx')}`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=assert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/utils/assert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iDAAiD;QACjD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,CAAC,IAAI,CACzB,KAAK,CACN,kCAAkC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CACtE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type TemplateConfiguration } from '../template.ts';
|
|
2
|
+
type PackageJson = {
|
|
3
|
+
dependencies?: Record<string, string>;
|
|
4
|
+
devDependencies?: Record<string, string>;
|
|
5
|
+
peerDependencies?: Record<string, string>;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
type Tool = {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
condition?: (context: Pick<TemplateConfiguration, 'example'>) => boolean;
|
|
12
|
+
postprocess?: (options: {
|
|
13
|
+
config: TemplateConfiguration;
|
|
14
|
+
root: string;
|
|
15
|
+
}) => void | Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
type Options = {
|
|
18
|
+
tools: string[];
|
|
19
|
+
root: string;
|
|
20
|
+
packageJson: PackageJson;
|
|
21
|
+
config: TemplateConfiguration;
|
|
22
|
+
};
|
|
23
|
+
export declare const AVAILABLE_TOOLS: {
|
|
24
|
+
readonly eslint: {
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
readonly jest: {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
readonly lefthook: {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
readonly 'release-it': {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
readonly vite: Tool;
|
|
41
|
+
};
|
|
42
|
+
export declare function configureTools({ tools, config, root, packageJson, }: Options): Promise<void>;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { applyTemplate } from "../template.js";
|
|
4
|
+
import sortObjectKeys from "./sortObjectKeys.js";
|
|
5
|
+
const ESLINT = {
|
|
6
|
+
name: 'ESLint with Prettier',
|
|
7
|
+
description: 'Lint and format code',
|
|
8
|
+
};
|
|
9
|
+
const LEFTHOOK = {
|
|
10
|
+
name: 'Lefthook with Commitlint',
|
|
11
|
+
description: 'Manage Git hooks and lint commit messages',
|
|
12
|
+
};
|
|
13
|
+
const RELEASE_IT = {
|
|
14
|
+
name: 'Release It',
|
|
15
|
+
description: 'Automate versioning and package publishing tasks',
|
|
16
|
+
};
|
|
17
|
+
const JEST = {
|
|
18
|
+
name: 'Jest',
|
|
19
|
+
description: 'Test JavaScript and TypeScript code',
|
|
20
|
+
};
|
|
21
|
+
const TURBOREPO = {
|
|
22
|
+
name: 'Turborepo',
|
|
23
|
+
description: 'Cache build outputs on CI',
|
|
24
|
+
};
|
|
25
|
+
const VITE = {
|
|
26
|
+
name: 'Vite',
|
|
27
|
+
description: 'Add web support to the example app',
|
|
28
|
+
condition: (config) => config.example != null && config.example !== 'expo',
|
|
29
|
+
postprocess: async ({ root }) => {
|
|
30
|
+
const examplePkgPath = path.join(root, 'example', 'package.json');
|
|
31
|
+
if (!fs.existsSync(examplePkgPath)) {
|
|
32
|
+
throw new Error("Couldn't find the example app's package.json.");
|
|
33
|
+
}
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
35
|
+
const examplePackageJson = (await fs.readJson(examplePkgPath));
|
|
36
|
+
const reactVersion = examplePackageJson.dependencies?.react ??
|
|
37
|
+
examplePackageJson.devDependencies?.react;
|
|
38
|
+
if (reactVersion == null) {
|
|
39
|
+
throw new Error("Couldn't find the package 'react' in the example app.");
|
|
40
|
+
}
|
|
41
|
+
examplePackageJson.dependencies = sortObjectKeys({
|
|
42
|
+
...examplePackageJson.dependencies,
|
|
43
|
+
'react-dom': reactVersion,
|
|
44
|
+
});
|
|
45
|
+
await fs.writeJson(examplePkgPath, examplePackageJson, { spaces: 2 });
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
export const AVAILABLE_TOOLS = {
|
|
49
|
+
eslint: ESLINT,
|
|
50
|
+
jest: JEST,
|
|
51
|
+
lefthook: LEFTHOOK,
|
|
52
|
+
'release-it': RELEASE_IT,
|
|
53
|
+
vite: VITE,
|
|
54
|
+
};
|
|
55
|
+
const REQUIRED_TOOLS = {
|
|
56
|
+
turborepo: TURBOREPO,
|
|
57
|
+
};
|
|
58
|
+
const ALL_TOOLS = {
|
|
59
|
+
...AVAILABLE_TOOLS,
|
|
60
|
+
...REQUIRED_TOOLS,
|
|
61
|
+
};
|
|
62
|
+
export async function configureTools({ tools, config, root, packageJson, }) {
|
|
63
|
+
for (const key of [
|
|
64
|
+
...tools,
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
66
|
+
...Object.keys(REQUIRED_TOOLS),
|
|
67
|
+
]) {
|
|
68
|
+
if (!(key in ALL_TOOLS)) {
|
|
69
|
+
throw new Error(`Invalid tool '${key}'. Available tools are: ${Object.keys(AVAILABLE_TOOLS).join(', ')}.`);
|
|
70
|
+
}
|
|
71
|
+
// @ts-expect-error: We checked the key above
|
|
72
|
+
const tool = ALL_TOOLS[key];
|
|
73
|
+
if (tool.condition && !tool.condition(config)) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const toolDir = path.resolve(import.meta.dirname, `../../../templates/tools/${key}`);
|
|
77
|
+
if (fs.existsSync(toolDir)) {
|
|
78
|
+
await applyTemplate(config, toolDir, root);
|
|
79
|
+
}
|
|
80
|
+
const examplePkgPath = path.join(toolDir, 'example', '~package.json');
|
|
81
|
+
await mergePackageJsonTemplate(path.join(toolDir, '~package.json'), packageJson);
|
|
82
|
+
if (fs.existsSync(examplePkgPath)) {
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
84
|
+
const existingExamplePackageJson = (await fs.readJson(path.join(root, 'example', 'package.json')));
|
|
85
|
+
await mergePackageJsonTemplate(examplePkgPath, existingExamplePackageJson);
|
|
86
|
+
await fs.writeJson(path.join(root, 'example', 'package.json'), existingExamplePackageJson, {
|
|
87
|
+
spaces: 2,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
await tool.postprocess?.({ config, root });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function mergePackageJsonTemplate(templatePath, packageJson) {
|
|
94
|
+
if (!fs.existsSync(templatePath)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
98
|
+
const template = (await fs.readJson(templatePath));
|
|
99
|
+
for (const [field, value] of Object.entries(template)) {
|
|
100
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
101
|
+
if (typeof packageJson[field] === 'object' ||
|
|
102
|
+
packageJson[field] == null) {
|
|
103
|
+
packageJson[field] = {
|
|
104
|
+
...packageJson[field],
|
|
105
|
+
...value,
|
|
106
|
+
};
|
|
107
|
+
if (field === 'dependencies' ||
|
|
108
|
+
field === 'devDependencies' ||
|
|
109
|
+
field === 'peerDependencies') {
|
|
110
|
+
packageJson[field] = sortObjectKeys(packageJson[field]);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
throw new Error(`Cannot merge '${field}' field because it is not an object (got '${String(packageJson[field])}').`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
packageJson[field] = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=configureTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureTools.js","sourceRoot":"","sources":["../../../src/utils/configureTools.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,aAAa,EAA8B,MAAM,gBAAgB,CAAC;AAC3E,OAAO,cAAc,MAAM,qBAAqB,CAAC;AA0BjD,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,2CAA2C;CACzD,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,kDAAkD;CAChE,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,qCAAqC;CACnD,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,2BAA2B;CACzC,CAAC;AAEF,MAAM,IAAI,GAAS;IACjB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,oCAAoC;IACjD,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;IAC1E,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,uEAAuE;QACvE,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3C,cAAc,CACf,CAAgB,CAAC;QAElB,MAAM,YAAY,GAChB,kBAAkB,CAAC,YAAY,EAAE,KAAK;YACtC,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC;QAE5C,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,kBAAkB,CAAC,YAAY,GAAG,cAAc,CAAC;YAC/C,GAAG,kBAAkB,CAAC,YAAY;YAClC,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,IAAI,EAAE,IAAI;CAC6B,CAAC;AAE1C,MAAM,cAAc,GAAG;IACrB,SAAS,EAAE,SAAS;CACmB,CAAC;AAE1C,MAAM,SAAS,GAAG;IAChB,GAAG,eAAe;IAClB,GAAG,cAAc;CACT,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,KAAK,EACL,MAAM,EACN,IAAI,EACJ,WAAW,GACH;IACR,KAAK,MAAM,GAAG,IAAI;QAChB,GAAG,KAAK;QACR,uEAAuE;QACvE,GAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAqC;KACpE,EAAE,CAAC;QACF,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,2BAA2B,MAAM,CAAC,IAAI,CACxD,eAAe,CAChB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,IAAI,GAAS,SAAS,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,4BAA4B,GAAG,EAAE,CAClC,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAEtE,MAAM,wBAAwB,CAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EACnC,WAAW,CACZ,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,uEAAuE;YACvE,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAC3C,CAAgB,CAAC;YAElB,MAAM,wBAAwB,CAC5B,cAAc,EACd,0BAA0B,CAC3B,CAAC;YAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,EAC1C,0BAA0B,EAC1B;gBACE,MAAM,EAAE,CAAC;aACV,CACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,YAAoB,EACpB,WAAwB;IAExB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAgB,CAAC;IAElE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,IACE,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,QAAQ;gBACtC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAC1B,CAAC;gBACD,WAAW,CAAC,KAAK,CAAC,GAAG;oBACnB,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrB,GAAG,KAAK;iBACT,CAAC;gBAEF,IACE,KAAK,KAAK,cAAc;oBACxB,KAAK,KAAK,iBAAiB;oBAC3B,KAAK,KAAK,kBAAkB,EAC5B,CAAC;oBACD,WAAW,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,6CAA6C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CACnG,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import pack from '../../package.json' with { type: 'json' };
|
|
2
|
+
export function createMetadata(answers) {
|
|
3
|
+
// Some of the passed args can already be derived from the generated package.json file.
|
|
4
|
+
const ignoredAnswers = [
|
|
5
|
+
'name',
|
|
6
|
+
'directory',
|
|
7
|
+
'slug',
|
|
8
|
+
'description',
|
|
9
|
+
'authorName',
|
|
10
|
+
'authorEmail',
|
|
11
|
+
'authorUrl',
|
|
12
|
+
'repoUrl',
|
|
13
|
+
'example',
|
|
14
|
+
'reactNativeVersion',
|
|
15
|
+
'local',
|
|
16
|
+
];
|
|
17
|
+
const libraryMetadata = Object.fromEntries(Object.entries(answers).filter(([answer]) => !ignoredAnswers.includes(
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
19
|
+
answer)));
|
|
20
|
+
libraryMetadata.version = pack.version;
|
|
21
|
+
return libraryMetadata;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=createMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMetadata.js","sourceRoot":"","sources":["../../../src/utils/createMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAG5D,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,uFAAuF;IACvF,MAAM,cAAc,GAAsB;QACxC,MAAM;QACN,WAAW;QACX,MAAM;QACN,aAAa;QACb,YAAY;QACZ,aAAa;QACb,WAAW;QACX,SAAS;QACT,SAAS;QACT,oBAAoB;QACpB,OAAO;KACR,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CACxC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAC5B,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CACX,CAAC,cAAc,CAAC,QAAQ;IACtB,uEAAuE;IACvE,MAAuB,CACxB,CACJ,CACF,CAAC;IAEF,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAEvC,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createInitialGitCommit(folder: string, signal?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { spawn } from "./spawn.js";
|
|
2
|
+
export async function createInitialGitCommit(folder, signal) {
|
|
3
|
+
let isInGitRepo = false;
|
|
4
|
+
try {
|
|
5
|
+
isInGitRepo =
|
|
6
|
+
(await spawn('git', ['rev-parse', '--is-inside-work-tree'], {
|
|
7
|
+
cwd: folder,
|
|
8
|
+
signal,
|
|
9
|
+
})) === 'true';
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
// Ignore errors
|
|
13
|
+
}
|
|
14
|
+
if (!isInGitRepo) {
|
|
15
|
+
await spawn('git', ['init'], { cwd: folder, signal });
|
|
16
|
+
await spawn('git', ['branch', '-M', 'main'], { cwd: folder, signal });
|
|
17
|
+
await spawn('git', ['add', '.'], { cwd: folder, signal });
|
|
18
|
+
await spawn('git', ['commit', '-m', 'chore: initial commit'], {
|
|
19
|
+
cwd: folder,
|
|
20
|
+
signal,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=initialCommit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialCommit.js","sourceRoot":"","sources":["../../../src/utils/initialCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,MAAoB;IAEpB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,CAAC;QACH,WAAW;YACT,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE;gBAC1D,GAAG,EAAE,MAAM;gBACX,MAAM;aACP,CAAC,CAAC,KAAK,MAAM,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;IAClB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,uBAAuB,CAAC,EAAE;YAC5D,GAAG,EAAE,MAAM;YACX,MAAM;SACP,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TemplateConfiguration } from '../template.ts';
|
|
2
|
+
/** @returns `true` if successfull */
|
|
3
|
+
export declare function addNitroDependencyToLocalLibrary(config: TemplateConfiguration): Promise<boolean>;
|
|
4
|
+
/** @returns `true` if successfull */
|
|
5
|
+
export declare function linkLocalLibrary(config: TemplateConfiguration, folder: string, packageManager: string): Promise<boolean>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
/** @returns `true` if successfull */
|
|
4
|
+
export async function addNitroDependencyToLocalLibrary(config) {
|
|
5
|
+
if (config.versions.nitro === undefined) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const appPackageJsonPath = await findAppPackageJsonPath();
|
|
9
|
+
if (appPackageJsonPath === null) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const appPackageJson = await fs.readJson(appPackageJsonPath);
|
|
13
|
+
const dependencies = appPackageJson['dependencies'] ?? {};
|
|
14
|
+
dependencies['react-native-nitro-modules'] = config.versions.nitro;
|
|
15
|
+
appPackageJson['dependencies'] = dependencies;
|
|
16
|
+
await fs.writeJson(appPackageJsonPath, appPackageJson, {
|
|
17
|
+
spaces: 2,
|
|
18
|
+
});
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
/** @returns `true` if successfull */
|
|
22
|
+
export async function linkLocalLibrary(config, folder, packageManager) {
|
|
23
|
+
const appPackageJsonPath = await findAppPackageJsonPath();
|
|
24
|
+
if (appPackageJsonPath === null) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const appPackageJson = await fs.readJson(appPackageJsonPath);
|
|
28
|
+
const isReactNativeProject = Boolean(appPackageJson.dependencies?.['react-native']);
|
|
29
|
+
if (!isReactNativeProject) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const dependencies = appPackageJson['dependencies'] ?? {};
|
|
33
|
+
dependencies[config.project.slug] =
|
|
34
|
+
packageManager === 'yarn'
|
|
35
|
+
? `link:./${path.relative(process.cwd(), folder)}`
|
|
36
|
+
: `file:./${path.relative(process.cwd(), folder)}`;
|
|
37
|
+
await fs.writeJSON(appPackageJsonPath, appPackageJson, {
|
|
38
|
+
spaces: 2,
|
|
39
|
+
});
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
async function findAppPackageJsonPath() {
|
|
43
|
+
const cwdPackageJson = path.join(process.cwd(), 'package.json');
|
|
44
|
+
if (!(await fs.pathExists(cwdPackageJson))) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return cwdPackageJson;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/utils/local.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAO1B,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,MAA6B;IAE7B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC1D,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAgB,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE1D,YAAY,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEnE,cAAc,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,cAAc,EAAE;QACrD,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA6B,EAC7B,MAAc,EACd,cAAsB;IAEtB,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC1D,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAgB,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE1E,MAAM,oBAAoB,GAAG,OAAO,CAClC,cAAc,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,CAC9C,CAAC;IAEF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,cAAc,KAAK,MAAM;YACvB,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE;YAClD,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;IAEvD,MAAM,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,cAAc,EAAE;QACrD,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function determinePackageManager(): Promise<"npm" | "yarn">;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../../src/utils/packageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resolveNpmPackageVersion(name: string, fallback: string, timeout?: number): Promise<string>;
|