create-react-native-library 0.49.8 → 0.49.10
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/lib/exampleApp/dependencies.js +2 -7
- package/lib/exampleApp/dependencies.js.map +1 -1
- package/lib/exampleApp/generateExampleApp.js +23 -17
- package/lib/exampleApp/generateExampleApp.js.map +1 -1
- package/lib/index.js +22 -27
- package/lib/index.js.map +1 -1
- package/lib/inform.js +37 -47
- package/lib/inform.js.map +1 -1
- package/lib/input.js +2 -14
- package/lib/input.js.map +1 -1
- package/lib/template.js +28 -42
- package/lib/template.js.map +1 -1
- package/lib/utils/local.js +76 -0
- package/lib/utils/local.js.map +1 -0
- package/lib/utils/packageManager.js +13 -0
- package/lib/utils/packageManager.js.map +1 -0
- package/package.json +2 -2
- package/templates/common/$.gitignore +1 -1
- package/templates/common/$package.json +2 -11
- package/templates/common/CONTRIBUTING.md +16 -3
- package/templates/common/babel.config.js +10 -1
- package/templates/common-local/$package.json +1 -3
- package/templates/example-common/example/metro.config.js +0 -2
- package/templates/expo-library/example/metro.config.js +0 -2
- package/templates/native-common/android/build.gradle +5 -31
- package/templates/native-common/android/src/main/AndroidManifest.xml +1 -2
- package/templates/native-common/{%- project.name %}.podspec +3 -13
- package/templates/objc-library/ios/{%- project.name %}.h +1 -13
- package/templates/objc-library/ios/{%- project.name %}.mm +0 -24
- package/templates/objc-view-new/ios/{%- project.name %}View.mm +4 -4
- package/lib/exampleApp/addCodegenBuildScript.js +0 -55
- package/lib/exampleApp/addCodegenBuildScript.js.map +0 -1
- package/templates/cpp-library/android/CMakeLists.txt +0 -16
- package/templates/cpp-library/android/cpp-adapter.cpp +0 -8
- package/templates/cpp-library/cpp/{%- project.identifier %}.cpp +0 -7
- package/templates/cpp-library/cpp/{%- project.identifier %}.h +0 -8
- package/templates/example-module-legacy/example/src/App.tsx +0 -32
- package/templates/kotlin-library-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.kt +0 -25
- package/templates/kotlin-library-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt +0 -17
- package/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt +0 -17
- package/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt +0 -20
- package/templates/native-common/android/src/main/AndroidManifestNew.xml +0 -2
- package/templates/native-library-legacy/src/index.tsx +0 -22
- package/templates/native-library-new/react-native.config.js +0 -16
- package/templates/native-view-legacy/src/index.tsx +0 -26
- package/templates/native-view-new/react-native.config.js +0 -16
- package/templates/objc-view-legacy/ios/{%- project.name %}ViewManager.m +0 -34
- package/templates/swift-library-legacy/ios/{%- project.name %}-Bridging-Header.h +0 -2
- package/templates/swift-library-legacy/ios/{%- project.name %}.mm +0 -14
- package/templates/swift-library-legacy/ios/{%- project.name %}.swift +0 -8
- package/templates/swift-view-legacy/ios/{%- project.name %}-Bridging-Header.h +0 -1
- package/templates/swift-view-legacy/ios/{%- project.name %}ViewManager.m +0 -7
- package/templates/swift-view-legacy/ios/{%- project.name %}ViewManager.swift +0 -36
package/lib/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":["_githubUsername","_interopRequireDefault","require","_validateNpmPackageName","_package","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","slug","type","authorName","authorEmail","authorUrl","repoUrl","languages","choices","map","reactNativeVersion","local","example","createQuestions","basename","name","email","spawn","questions","message","initial","validateNpmPackage","validForNewPackages","test","undefined","validate","input","Boolean","previous","username","githubUsername","_","answers","replace","values","includes","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import githubUsername from 'github-username';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport type yargs from 'yargs';\nimport { version } from '../package.json';\nimport type { Question } from './utils/prompt';\nimport { spawn } from './utils/spawn';\n\nexport type ArgName =\n | 'slug'\n | 'description'\n | 'authorName'\n | 'authorEmail'\n | 'authorUrl'\n | 'repoUrl'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'reactNativeVersion';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'legacy-module'\n | 'legacy-view'\n | 'nitro-module'\n | 'library';\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\n}[] = [\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['nitro-module', 'legacy-module', 'legacy-view'],\n },\n {\n title: 'Kotlin & Objective-C',\n value: 'kotlin-objc',\n types: ['turbo-module', 'fabric-view', 'legacy-module', 'legacy-view'],\n },\n {\n title: 'C++ for Android & iOS',\n value: 'cpp',\n types: ['turbo-module', 'legacy-module'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'App with Community CLI',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'React Native Test App by Microsoft',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // The test app is disabled for now until proper\n // Codegen spec shipping is implemented\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'App with Expo CLI',\n value: 'expo',\n description: 'managed expo app with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'turbo-module',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'fabric-view',\n description: 'integration for native views to JS',\n },\n {\n title: 'Nitro module',\n value: 'nitro-module',\n description:\n 'type-safe, fast integration for native APIs to JS (experimental)',\n },\n {\n title: 'Legacy Native module',\n value: 'legacy-module',\n description: 'bridge for native APIs to JS (old architecture)',\n },\n {\n title: 'Legacy Native view',\n value: 'legacy-view',\n description: 'bridge for native views to JS (old architecture)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport const acceptedArgs: Record<ArgName, yargs.Options> = {\n slug: {\n description: 'Name of the npm package',\n type: 'string',\n },\n description: {\n description: 'Description of the npm package',\n type: 'string',\n },\n authorName: {\n description: 'Name of the package author',\n type: 'string',\n },\n authorEmail: {\n description: 'Email address of the package author',\n type: 'string',\n },\n authorUrl: {\n description: 'URL for the package author',\n type: 'string',\n },\n repoUrl: {\n description: 'URL for the repository',\n type: 'string',\n },\n languages: {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n type: {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n reactNativeVersion: {\n description: 'Version of React Native to use, uses latest if not specified',\n type: 'string',\n },\n local: {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n example: {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n} as const;\n\nexport type Args = Record<ArgName | 'name', string>;\nexport type SupportedArchitecture = 'new' | 'legacy';\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\nexport type Answers = {\n name: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type: ProjectType;\n example: ExampleApp;\n reactNativeVersion: string;\n local?: boolean;\n};\n\nexport async function createQuestions({\n basename,\n local,\n}: {\n basename: string;\n local: boolean;\n}) {\n let name, email;\n\n try {\n name = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const questions: Question<keyof Answers>[] = [\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: validateNpmPackage(basename).validForNewPackages\n ? /^(@|react-native)/.test(basename)\n ? basename\n : `react-native-${basename}`\n : undefined,\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: name,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: local ? null : 'text',\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n // @ts-expect-error this is supported, but types are wrong\n initial: async (previous: string) => {\n try {\n const username = await githubUsername(previous);\n\n return `https://github.com/${username}`;\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: local ? null : 'text',\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_: string, answers: Answers) => {\n if (/^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types) {\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n {\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n if (local) {\n return [\n {\n title: 'None',\n value: 'none',\n },\n ];\n }\n\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n },\n ];\n\n return questions;\n}\n\nexport function createMetadata(answers: Answers) {\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n ];\n\n type AnswerEntries<T extends keyof Answers = keyof Answers> = [\n T,\n Answers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n\n return libraryMetadata;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"input.js","names":["_githubUsername","_interopRequireDefault","require","_validateNpmPackageName","_package","_spawn","e","__esModule","default","LANGUAGE_CHOICES","title","value","types","EXAMPLE_CHOICES","description","disabled","process","env","CRNL_ENABLE_TEST_APP","filter","choice","TYPE_CHOICES","acceptedArgs","exports","slug","type","authorName","authorEmail","authorUrl","repoUrl","languages","choices","map","reactNativeVersion","local","example","createQuestions","basename","name","email","spawn","questions","message","initial","validateNpmPackage","validForNewPackages","test","undefined","validate","input","Boolean","previous","username","githubUsername","_","answers","replace","values","includes","createMetadata","ignoredAnswers","libraryMetadata","Object","fromEntries","entries","answer","version"],"sources":["../src/input.ts"],"sourcesContent":["import githubUsername from 'github-username';\nimport validateNpmPackage from 'validate-npm-package-name';\nimport type yargs from 'yargs';\nimport { version } from '../package.json';\nimport type { Question } from './utils/prompt';\nimport { spawn } from './utils/spawn';\n\nexport type ArgName =\n | 'slug'\n | 'description'\n | 'authorName'\n | 'authorEmail'\n | 'authorUrl'\n | 'repoUrl'\n | 'languages'\n | 'type'\n | 'local'\n | 'example'\n | 'reactNativeVersion';\n\nexport type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'js';\n\nexport type ProjectType =\n | 'turbo-module'\n | 'fabric-view'\n | 'nitro-module'\n | 'library';\n\nconst LANGUAGE_CHOICES: {\n title: string;\n value: ProjectLanguages;\n types: ProjectType[];\n}[] = [\n {\n title: 'Kotlin & Swift',\n value: 'kotlin-swift',\n types: ['nitro-module'],\n },\n {\n title: 'Kotlin & Objective-C',\n value: 'kotlin-objc',\n types: ['turbo-module', 'fabric-view'],\n },\n {\n title: 'JavaScript for Android, iOS & Web',\n value: 'js',\n types: ['library'],\n },\n];\n\nconst EXAMPLE_CHOICES = (\n [\n {\n title: 'App with Community CLI',\n value: 'vanilla',\n description: \"provides access to app's native code\",\n disabled: false,\n },\n {\n title: 'React Native Test App by Microsoft',\n value: 'test-app',\n description: \"app's native code is abstracted away\",\n // The test app is disabled for now until proper\n // Codegen spec shipping is implemented\n disabled: !process.env.CRNL_ENABLE_TEST_APP,\n },\n {\n title: 'App with Expo CLI',\n value: 'expo',\n description: 'managed expo app with web support',\n disabled: false,\n },\n ] as const\n).filter((choice) => !choice.disabled);\n\nconst TYPE_CHOICES: {\n title: string;\n value: ProjectType;\n description: string;\n}[] = [\n {\n title: 'Turbo module',\n value: 'turbo-module',\n description: 'integration for native APIs to JS',\n },\n {\n title: 'Fabric view',\n value: 'fabric-view',\n description: 'integration for native views to JS',\n },\n {\n title: 'Nitro module',\n value: 'nitro-module',\n description:\n 'type-safe, fast integration for native APIs to JS (experimental)',\n },\n {\n title: 'JavaScript library',\n value: 'library',\n description: 'supports Expo Go and Web',\n },\n];\n\nexport const acceptedArgs: Record<ArgName, yargs.Options> = {\n slug: {\n description: 'Name of the npm package',\n type: 'string',\n },\n description: {\n description: 'Description of the npm package',\n type: 'string',\n },\n authorName: {\n description: 'Name of the package author',\n type: 'string',\n },\n authorEmail: {\n description: 'Email address of the package author',\n type: 'string',\n },\n authorUrl: {\n description: 'URL for the package author',\n type: 'string',\n },\n repoUrl: {\n description: 'URL for the repository',\n type: 'string',\n },\n languages: {\n description: 'Languages you want to use',\n choices: LANGUAGE_CHOICES.map(({ value }) => value),\n },\n type: {\n description: 'Type of library you want to develop',\n choices: TYPE_CHOICES.map(({ value }) => value),\n },\n reactNativeVersion: {\n description: 'Version of React Native to use, uses latest if not specified',\n type: 'string',\n },\n local: {\n description: 'Whether to create a local library',\n type: 'boolean',\n },\n example: {\n description: 'Type of the example app to create',\n type: 'string',\n choices: EXAMPLE_CHOICES.map(({ value }) => value),\n },\n} as const;\n\nexport type Args = Record<ArgName | 'name', string>;\nexport type ExampleApp = 'none' | 'test-app' | 'expo' | 'vanilla';\n\nexport type Answers = {\n name: string;\n slug: string;\n description: string;\n authorName: string;\n authorEmail: string;\n authorUrl: string;\n repoUrl: string;\n languages: ProjectLanguages;\n type: ProjectType;\n example: ExampleApp;\n reactNativeVersion: string;\n local?: boolean;\n};\n\nexport async function createQuestions({\n basename,\n local,\n}: {\n basename: string;\n local: boolean;\n}) {\n let name, email;\n\n try {\n name = await spawn('git', ['config', '--get', 'user.name']);\n email = await spawn('git', ['config', '--get', 'user.email']);\n } catch (e) {\n // Ignore error\n }\n\n const questions: Question<keyof Answers>[] = [\n {\n type: 'text',\n name: 'slug',\n message: 'What is the name of the npm package?',\n initial: validateNpmPackage(basename).validForNewPackages\n ? /^(@|react-native)/.test(basename)\n ? basename\n : `react-native-${basename}`\n : undefined,\n validate: (input) =>\n validateNpmPackage(input).validForNewPackages ||\n 'Must be a valid npm package name',\n },\n {\n type: 'text',\n name: 'description',\n message: 'What is the description for the package?',\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorName',\n message: 'What is the name of package author?',\n initial: name,\n validate: (input) => Boolean(input) || 'Cannot be empty',\n },\n {\n type: local ? null : 'text',\n name: 'authorEmail',\n message: 'What is the email address for the package author?',\n initial: email,\n validate: (input) =>\n /^\\S+@\\S+$/.test(input) || 'Must be a valid email address',\n },\n {\n type: local ? null : 'text',\n name: 'authorUrl',\n message: 'What is the URL for the package author?',\n // @ts-expect-error this is supported, but types are wrong\n initial: async (previous: string) => {\n try {\n const username = await githubUsername(previous);\n\n return `https://github.com/${username}`;\n } catch (e) {\n // Ignore error\n }\n\n return undefined;\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: local ? null : 'text',\n name: 'repoUrl',\n message: 'What is the URL for the repository?',\n initial: (_: string, answers: Answers) => {\n if (/^https?:\\/\\/github.com\\/[^/]+/.test(answers.authorUrl)) {\n return `${answers.authorUrl}/${answers.slug\n .replace(/^@/, '')\n .replace(/\\//g, '-')}`;\n }\n\n return '';\n },\n validate: (input) => /^https?:\\/\\//.test(input) || 'Must be a valid URL',\n },\n {\n type: 'select',\n name: 'type',\n message: 'What type of library do you want to develop?',\n choices: TYPE_CHOICES,\n },\n {\n type: 'select',\n name: 'languages',\n message: 'Which languages do you want to use?',\n choices: (_, values) => {\n return LANGUAGE_CHOICES.filter((choice) => {\n if (choice.types) {\n return choice.types.includes(values.type);\n }\n\n return true;\n });\n },\n },\n {\n type: 'select',\n name: 'example',\n message: 'What type of example app do you want to create?',\n choices: (_, values) => {\n if (local) {\n return [\n {\n title: 'None',\n value: 'none',\n },\n ];\n }\n\n return EXAMPLE_CHOICES.filter((choice) => {\n if (values.type) {\n return values.type === 'library'\n ? choice.value === 'expo'\n : choice.value !== 'expo';\n }\n\n return true;\n });\n },\n },\n ];\n\n return questions;\n}\n\nexport function createMetadata(answers: Answers) {\n // Some of the passed args can already be derived from the generated package.json file.\n const ignoredAnswers: (keyof Answers)[] = [\n 'name',\n 'slug',\n 'description',\n 'authorName',\n 'authorEmail',\n 'authorUrl',\n 'repoUrl',\n 'example',\n 'reactNativeVersion',\n 'local',\n ];\n\n type AnswerEntries<T extends keyof Answers = keyof Answers> = [\n T,\n Answers[T],\n ][];\n\n const libraryMetadata = Object.fromEntries(\n (Object.entries(answers) as AnswerEntries).filter(\n ([answer]) => !ignoredAnswers.includes(answer)\n )\n );\n\n libraryMetadata.version = version;\n\n return libraryMetadata;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/template.js
CHANGED
|
@@ -16,36 +16,25 @@ const BINARIES = [/(gradlew|\.(jar|keystore|png|jpg|gif))$/, /\$\.yarn(?![a-z])/
|
|
|
16
16
|
const COMMON_FILES = _path.default.resolve(__dirname, '../templates/common');
|
|
17
17
|
const COMMON_LOCAL_FILES = _path.default.resolve(__dirname, '../templates/common-local');
|
|
18
18
|
const EXAMPLE_COMMON_FILES = _path.default.resolve(__dirname, '../templates/example-common');
|
|
19
|
-
const EXAMPLE_MODULE_LEGACY_FILES = _path.default.resolve(__dirname, '../templates/example-module-legacy');
|
|
20
19
|
const EXAMPLE_MODULE_NEW_FILES = _path.default.resolve(__dirname, '../templates/example-module-new');
|
|
21
20
|
const EXAMPLE_VIEW_FILES = _path.default.resolve(__dirname, '../templates/example-view');
|
|
22
21
|
const JS_FILES = _path.default.resolve(__dirname, '../templates/js-library');
|
|
23
22
|
const EXPO_FILES = _path.default.resolve(__dirname, '../templates/expo-library');
|
|
24
|
-
const CPP_FILES = _path.default.resolve(__dirname, '../templates/cpp-library');
|
|
25
23
|
const NATIVE_COMMON_FILES = _path.default.resolve(__dirname, '../templates/native-common');
|
|
26
24
|
const NATIVE_COMMON_EXAMPLE_FILES = _path.default.resolve(__dirname, '../templates/native-common-example');
|
|
27
25
|
const NATIVE_FILES = {
|
|
28
|
-
module_legacy: _path.default.resolve(__dirname, '../templates/native-library-legacy'),
|
|
29
26
|
module_new: _path.default.resolve(__dirname, '../templates/native-library-new'),
|
|
30
|
-
view_legacy: _path.default.resolve(__dirname, '../templates/native-view-legacy'),
|
|
31
27
|
view_new: _path.default.resolve(__dirname, '../templates/native-view-new'),
|
|
32
28
|
module_nitro: _path.default.resolve(__dirname, '../templates/nitro-module')
|
|
33
29
|
};
|
|
34
30
|
const OBJC_FILES = {
|
|
35
31
|
module_common: _path.default.resolve(__dirname, '../templates/objc-library'),
|
|
36
|
-
view_legacy: _path.default.resolve(__dirname, '../templates/objc-view-legacy'),
|
|
37
32
|
view_new: _path.default.resolve(__dirname, '../templates/objc-view-new')
|
|
38
33
|
};
|
|
39
34
|
const KOTLIN_FILES = {
|
|
40
|
-
module_legacy: _path.default.resolve(__dirname, '../templates/kotlin-library-legacy'),
|
|
41
35
|
module_new: _path.default.resolve(__dirname, '../templates/kotlin-library-new'),
|
|
42
|
-
view_legacy: _path.default.resolve(__dirname, '../templates/kotlin-view-legacy'),
|
|
43
36
|
view_new: _path.default.resolve(__dirname, '../templates/kotlin-view-new')
|
|
44
37
|
};
|
|
45
|
-
const SWIFT_FILES = {
|
|
46
|
-
module_legacy: _path.default.resolve(__dirname, '../templates/swift-library-legacy'),
|
|
47
|
-
view_legacy: _path.default.resolve(__dirname, '../templates/swift-view-legacy')
|
|
48
|
-
};
|
|
49
38
|
function generateTemplateConfiguration({
|
|
50
39
|
versions,
|
|
51
40
|
basename,
|
|
@@ -56,7 +45,6 @@ function generateTemplateConfiguration({
|
|
|
56
45
|
languages,
|
|
57
46
|
type
|
|
58
47
|
} = answers;
|
|
59
|
-
const arch = type === 'legacy-module' || type === 'legacy-view' || type === 'library' ? 'legacy' : 'new';
|
|
60
48
|
const project = slug.replace(/^(react-native-|@[^/]+\/)/, '');
|
|
61
49
|
let namespace;
|
|
62
50
|
if (slug.startsWith('@') && slug.includes('/')) {
|
|
@@ -80,8 +68,6 @@ function generateTemplateConfiguration({
|
|
|
80
68
|
package_cpp: pack.replace(/\./g, '_'),
|
|
81
69
|
identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),
|
|
82
70
|
native: languages !== 'js',
|
|
83
|
-
arch,
|
|
84
|
-
cpp: languages === 'cpp',
|
|
85
71
|
swift: languages === 'kotlin-swift',
|
|
86
72
|
viewConfig: getViewConfig(type),
|
|
87
73
|
moduleConfig: getModuleConfig(type)
|
|
@@ -102,16 +88,12 @@ function getModuleConfig(projectType) {
|
|
|
102
88
|
return 'nitro-modules';
|
|
103
89
|
case 'turbo-module':
|
|
104
90
|
return 'turbo-modules';
|
|
105
|
-
case 'legacy-module':
|
|
106
|
-
return 'native-modules';
|
|
107
91
|
default:
|
|
108
92
|
return null;
|
|
109
93
|
}
|
|
110
94
|
}
|
|
111
95
|
function getViewConfig(projectType) {
|
|
112
96
|
switch (projectType) {
|
|
113
|
-
case 'legacy-view':
|
|
114
|
-
return 'paper-view';
|
|
115
97
|
case 'fabric-view':
|
|
116
98
|
return 'fabric-view';
|
|
117
99
|
default:
|
|
@@ -131,11 +113,7 @@ async function applyTemplates(answers, config, folder) {
|
|
|
131
113
|
if (config.project.viewConfig !== null) {
|
|
132
114
|
await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);
|
|
133
115
|
} else {
|
|
134
|
-
|
|
135
|
-
await applyTemplate(config, EXAMPLE_MODULE_LEGACY_FILES, folder);
|
|
136
|
-
} else {
|
|
137
|
-
await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);
|
|
138
|
-
}
|
|
116
|
+
await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);
|
|
139
117
|
}
|
|
140
118
|
}
|
|
141
119
|
}
|
|
@@ -152,25 +130,17 @@ async function applyTemplates(answers, config, folder) {
|
|
|
152
130
|
return;
|
|
153
131
|
}
|
|
154
132
|
if (config.project.moduleConfig !== null) {
|
|
155
|
-
await applyTemplate(config, NATIVE_FILES[`
|
|
133
|
+
await applyTemplate(config, NATIVE_FILES[`module_new`], folder);
|
|
156
134
|
} else {
|
|
157
|
-
await applyTemplate(config, NATIVE_FILES[`
|
|
135
|
+
await applyTemplate(config, NATIVE_FILES[`view_new`], folder);
|
|
158
136
|
}
|
|
159
|
-
if (config.project.
|
|
160
|
-
await applyTemplate(config,
|
|
137
|
+
if (config.project.moduleConfig !== null) {
|
|
138
|
+
await applyTemplate(config, OBJC_FILES[`module_common`], folder);
|
|
161
139
|
} else {
|
|
162
|
-
|
|
163
|
-
await applyTemplate(config, OBJC_FILES[`module_common`], folder);
|
|
164
|
-
} else {
|
|
165
|
-
await applyTemplate(config, OBJC_FILES[`view_${config.project.arch}`], folder);
|
|
166
|
-
}
|
|
140
|
+
await applyTemplate(config, OBJC_FILES[`view_new`], folder);
|
|
167
141
|
}
|
|
168
|
-
const templateType = `${config.project.moduleConfig !== null ? 'module' : 'view'}
|
|
142
|
+
const templateType = `${config.project.moduleConfig !== null ? 'module' : 'view'}_new`;
|
|
169
143
|
await applyTemplate(config, KOTLIN_FILES[templateType], folder);
|
|
170
|
-
if (config.project.cpp) {
|
|
171
|
-
await applyTemplate(config, CPP_FILES, folder);
|
|
172
|
-
await _fsExtra.default.remove(_path.default.join(folder, 'ios', `${config.project.name}.m`));
|
|
173
|
-
}
|
|
174
144
|
}
|
|
175
145
|
}
|
|
176
146
|
|
|
@@ -181,17 +151,33 @@ async function applyTemplate(config, source, destination) {
|
|
|
181
151
|
await _fsExtra.default.mkdirp(destination);
|
|
182
152
|
const files = await _fsExtra.default.readdir(source);
|
|
183
153
|
for (const f of files) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
154
|
+
let name;
|
|
155
|
+
try {
|
|
156
|
+
name = _ejs.default.render(f.replace(/^\$/, ''), config, {
|
|
157
|
+
openDelimiter: '{',
|
|
158
|
+
closeDelimiter: '}'
|
|
159
|
+
});
|
|
160
|
+
} catch (e) {
|
|
161
|
+
throw new Error(`Failed to render template file name: ${f}`, {
|
|
162
|
+
cause: e
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const target = _path.default.join(destination, name);
|
|
188
166
|
const file = _path.default.join(source, f);
|
|
189
167
|
const stats = await _fsExtra.default.stat(file);
|
|
190
168
|
if (stats.isDirectory()) {
|
|
191
169
|
await applyTemplate(config, file, target);
|
|
192
170
|
} else if (!BINARIES.some(r => r.test(file))) {
|
|
193
171
|
const content = await _fsExtra.default.readFile(file, 'utf8');
|
|
194
|
-
|
|
172
|
+
let result;
|
|
173
|
+
try {
|
|
174
|
+
result = _ejs.default.render(content, config);
|
|
175
|
+
} catch (e) {
|
|
176
|
+
throw new Error(`Failed to render template file content: ${f}`, {
|
|
177
|
+
cause: e
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
await _fsExtra.default.writeFile(target, result);
|
|
195
181
|
} else {
|
|
196
182
|
await _fsExtra.default.copyFile(file, target);
|
|
197
183
|
}
|
package/lib/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","e","__esModule","default","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_LOCAL_FILES","EXAMPLE_COMMON_FILES","EXAMPLE_MODULE_LEGACY_FILES","EXAMPLE_MODULE_NEW_FILES","EXAMPLE_VIEW_FILES","JS_FILES","EXPO_FILES","CPP_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_legacy","module_new","view_legacy","view_new","module_nitro","OBJC_FILES","module_common","KOTLIN_FILES","SWIFT_FILES","generateTemplateConfiguration","versions","basename","answers","slug","languages","type","arch","project","replace","namespace","startsWith","includes","split","toLowerCase","pack","description","name","test","charAt","toUpperCase","_","$1","slice","package","package_dir","package_cpp","identifier","native","cpp","swift","viewConfig","getViewConfig","moduleConfig","getModuleConfig","author","authorName","email","authorEmail","url","authorUrl","repo","repoUrl","example","year","Date","getFullYear","projectType","applyTemplates","config","folder","local","applyTemplate","templateType","fs","remove","join","source","destination","mkdirp","files","readdir","f","target","ejs","render","openDelimiter","closeDelimiter","file","stats","stat","isDirectory","some","r","content","readFile","writeFile","copyFile"],"sources":["../src/template.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport type {\n Answers,\n ExampleApp,\n ProjectType,\n SupportedArchitecture,\n} from './input';\n\nexport type TemplateVersions = {\n bob: string;\n nitroModules?: string;\n nitroCodegen?: string;\n};\n\nexport type ModuleConfig =\n | 'native-modules'\n | 'turbo-modules'\n | 'nitro-modules'\n | null;\n\nexport type ViewConfig = 'paper-view' | 'fabric-view' | null;\n\n// Please think at least 5 times before introducing a new config key\n// You can just reuse the existing ones most of the time\nexport type TemplateConfiguration = {\n versions: TemplateVersions;\n project: {\n slug: string;\n description: string;\n name: string;\n package: string;\n package_dir: string;\n package_cpp: string;\n identifier: string;\n native: boolean;\n arch: SupportedArchitecture;\n cpp: boolean;\n swift: boolean;\n viewConfig: ViewConfig;\n moduleConfig: ModuleConfig;\n };\n author: {\n name: string;\n email: string;\n url: string;\n };\n repo: string;\n example: ExampleApp;\n year: number;\n};\n\nconst BINARIES = [\n /(gradlew|\\.(jar|keystore|png|jpg|gif))$/,\n /\\$\\.yarn(?![a-z])/,\n];\n\nconst COMMON_FILES = path.resolve(__dirname, '../templates/common');\nconst COMMON_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst EXAMPLE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/example-common'\n);\nconst EXAMPLE_MODULE_LEGACY_FILES = path.resolve(\n __dirname,\n '../templates/example-module-legacy'\n);\nconst EXAMPLE_MODULE_NEW_FILES = path.resolve(\n __dirname,\n '../templates/example-module-new'\n);\nconst EXAMPLE_VIEW_FILES = path.resolve(__dirname, '../templates/example-view');\n\nconst JS_FILES = path.resolve(__dirname, '../templates/js-library');\nconst EXPO_FILES = path.resolve(__dirname, '../templates/expo-library');\nconst CPP_FILES = path.resolve(__dirname, '../templates/cpp-library');\nconst NATIVE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/native-common'\n);\nconst NATIVE_COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/native-common-example'\n);\n\nconst NATIVE_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/native-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/native-library-new'),\n view_legacy: path.resolve(__dirname, '../templates/native-view-legacy'),\n view_new: path.resolve(__dirname, '../templates/native-view-new'),\n module_nitro: path.resolve(__dirname, '../templates/nitro-module'),\n} as const;\n\nconst OBJC_FILES = {\n module_common: path.resolve(__dirname, '../templates/objc-library'),\n view_legacy: path.resolve(__dirname, '../templates/objc-view-legacy'),\n view_new: path.resolve(__dirname, '../templates/objc-view-new'),\n} as const;\n\nconst KOTLIN_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/kotlin-library-legacy'),\n module_new: path.resolve(__dirname, '../templates/kotlin-library-new'),\n view_legacy: path.resolve(__dirname, '../templates/kotlin-view-legacy'),\n view_new: path.resolve(__dirname, '../templates/kotlin-view-new'),\n} as const;\n\nconst SWIFT_FILES = {\n module_legacy: path.resolve(__dirname, '../templates/swift-library-legacy'),\n view_legacy: path.resolve(__dirname, '../templates/swift-view-legacy'),\n} as const;\n\nexport function generateTemplateConfiguration({\n versions,\n basename,\n answers,\n}: {\n versions: TemplateVersions;\n basename: string;\n answers: Answers;\n}): TemplateConfiguration {\n const { slug, languages, type } = answers;\n\n const arch =\n type === 'legacy-module' || type === 'legacy-view' || type === 'library'\n ? 'legacy'\n : 'new';\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\n let namespace: string | undefined;\n\n if (slug.startsWith('@') && slug.includes('/')) {\n namespace = slug\n .split('/')[0]\n ?.replace(/[^a-z0-9]/g, '')\n .toLowerCase();\n }\n\n // Create a package identifier with specified namespace when possible\n const pack = `${namespace ? `${namespace}.` : ''}${project\n .replace(/[^a-z0-9]/g, '')\n .toLowerCase()}`;\n\n return {\n versions,\n project: {\n slug,\n description: answers.description,\n name:\n /^[A-Z]/.test(basename) && /^[a-z0-9]+$/i.test(basename)\n ? // If the project name is already in PascalCase, use it as-is\n basename\n : // Otherwise, convert it to PascalCase and remove any non-alphanumeric characters\n `${project.charAt(0).toUpperCase()}${project\n .replace(/[^a-z0-9](\\w)/g, (_, $1) => $1.toUpperCase())\n .slice(1)}`,\n package: pack,\n package_dir: pack.replace(/\\./g, '/'),\n package_cpp: pack.replace(/\\./g, '_'),\n identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),\n native: languages !== 'js',\n arch,\n cpp: languages === 'cpp',\n swift: languages === 'kotlin-swift',\n viewConfig: getViewConfig(type),\n moduleConfig: getModuleConfig(type),\n },\n author: {\n name: answers.authorName,\n email: answers.authorEmail,\n url: answers.authorUrl,\n },\n repo: answers.repoUrl,\n example: answers.example,\n year: new Date().getFullYear(),\n };\n}\n\nfunction getModuleConfig(projectType: ProjectType): ModuleConfig {\n switch (projectType) {\n case 'nitro-module':\n return 'nitro-modules';\n case 'turbo-module':\n return 'turbo-modules';\n case 'legacy-module':\n return 'native-modules';\n default:\n return null;\n }\n}\n\nfunction getViewConfig(projectType: ProjectType): ViewConfig {\n switch (projectType) {\n case 'legacy-view':\n return 'paper-view';\n case 'fabric-view':\n return 'fabric-view';\n default:\n return null;\n }\n}\n\nexport async function applyTemplates(\n answers: Answers,\n config: TemplateConfiguration,\n folder: string\n) {\n const { local } = answers;\n if (local) {\n await applyTemplate(config, COMMON_LOCAL_FILES, folder);\n } else {\n await applyTemplate(config, COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, EXAMPLE_COMMON_FILES, folder);\n\n if (config.project.viewConfig !== null) {\n await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);\n } else {\n if (config.project.arch === 'legacy') {\n await applyTemplate(config, EXAMPLE_MODULE_LEGACY_FILES, folder);\n } else {\n await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);\n }\n }\n }\n }\n\n if (answers.languages === 'js') {\n await applyTemplate(config, JS_FILES, folder);\n await applyTemplate(config, EXPO_FILES, folder);\n } else {\n await applyTemplate(config, NATIVE_COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (config.project.moduleConfig === 'nitro-modules') {\n await applyTemplate(config, NATIVE_FILES['module_nitro'], folder);\n return;\n }\n\n if (config.project.moduleConfig !== null) {\n await applyTemplate(\n config,\n NATIVE_FILES[`module_${config.project.arch}`],\n folder\n );\n } else {\n await applyTemplate(\n config,\n NATIVE_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n\n if (config.project.swift) {\n await applyTemplate(config, SWIFT_FILES[`module_legacy`], folder);\n } else {\n if (config.project.moduleConfig !== null) {\n await applyTemplate(config, OBJC_FILES[`module_common`], folder);\n } else {\n await applyTemplate(\n config,\n OBJC_FILES[`view_${config.project.arch}`],\n folder\n );\n }\n }\n\n const templateType = `${\n config.project.moduleConfig !== null ? 'module' : 'view'\n }_${config.project.arch}` as const;\n\n await applyTemplate(config, KOTLIN_FILES[templateType], folder);\n\n if (config.project.cpp) {\n await applyTemplate(config, CPP_FILES, folder);\n await fs.remove(path.join(folder, 'ios', `${config.project.name}.m`));\n }\n }\n}\n\n/**\n * This copies the template files and renders them via ejs\n */\nasync function applyTemplate(\n config: TemplateConfiguration,\n source: string,\n destination: string\n) {\n await fs.mkdirp(destination);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n const target = path.join(\n destination,\n ejs.render(f.replace(/^\\$/, ''), config, {\n openDelimiter: '{',\n closeDelimiter: '}',\n })\n );\n\n const file = path.join(source, f);\n const stats = await fs.stat(file);\n\n if (stats.isDirectory()) {\n await applyTemplate(config, file, target);\n } else if (!BINARIES.some((r) => r.test(file))) {\n const content = await fs.readFile(file, 'utf8');\n\n await fs.writeFile(target, ejs.render(content, config));\n } else {\n await fs.copyFile(file, target);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"template.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ejs","e","__esModule","default","BINARIES","COMMON_FILES","path","resolve","__dirname","COMMON_LOCAL_FILES","EXAMPLE_COMMON_FILES","EXAMPLE_MODULE_NEW_FILES","EXAMPLE_VIEW_FILES","JS_FILES","EXPO_FILES","NATIVE_COMMON_FILES","NATIVE_COMMON_EXAMPLE_FILES","NATIVE_FILES","module_new","view_new","module_nitro","OBJC_FILES","module_common","KOTLIN_FILES","generateTemplateConfiguration","versions","basename","answers","slug","languages","type","project","replace","namespace","startsWith","includes","split","toLowerCase","pack","description","name","test","charAt","toUpperCase","_","$1","slice","package","package_dir","package_cpp","identifier","native","swift","viewConfig","getViewConfig","moduleConfig","getModuleConfig","author","authorName","email","authorEmail","url","authorUrl","repo","repoUrl","example","year","Date","getFullYear","projectType","applyTemplates","config","folder","local","applyTemplate","templateType","source","destination","fs","mkdirp","files","readdir","f","ejs","render","openDelimiter","closeDelimiter","Error","cause","target","join","file","stats","stat","isDirectory","some","r","content","readFile","result","writeFile","copyFile"],"sources":["../src/template.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport ejs from 'ejs';\nimport type { Answers, ExampleApp, ProjectType } from './input';\n\nexport type TemplateVersions = {\n bob: string;\n nitroModules?: string;\n nitroCodegen?: string;\n};\n\nexport type ModuleConfig =\n | 'native-modules'\n | 'turbo-modules'\n | 'nitro-modules'\n | null;\n\nexport type ViewConfig = 'paper-view' | 'fabric-view' | null;\n\n// Please think at least 5 times before introducing a new config key\n// You can just reuse the existing ones most of the time\nexport type TemplateConfiguration = {\n versions: TemplateVersions;\n project: {\n slug: string;\n description: string;\n name: string;\n package: string;\n package_dir: string;\n package_cpp: string;\n identifier: string;\n native: boolean;\n swift: boolean;\n viewConfig: ViewConfig;\n moduleConfig: ModuleConfig;\n };\n author: {\n name: string;\n email: string;\n url: string;\n };\n /** Git repo URL */\n repo: string;\n example: ExampleApp;\n year: number;\n};\n\nconst BINARIES = [\n /(gradlew|\\.(jar|keystore|png|jpg|gif))$/,\n /\\$\\.yarn(?![a-z])/,\n];\n\nconst COMMON_FILES = path.resolve(__dirname, '../templates/common');\nconst COMMON_LOCAL_FILES = path.resolve(__dirname, '../templates/common-local');\nconst EXAMPLE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/example-common'\n);\nconst EXAMPLE_MODULE_NEW_FILES = path.resolve(\n __dirname,\n '../templates/example-module-new'\n);\nconst EXAMPLE_VIEW_FILES = path.resolve(__dirname, '../templates/example-view');\n\nconst JS_FILES = path.resolve(__dirname, '../templates/js-library');\nconst EXPO_FILES = path.resolve(__dirname, '../templates/expo-library');\nconst NATIVE_COMMON_FILES = path.resolve(\n __dirname,\n '../templates/native-common'\n);\nconst NATIVE_COMMON_EXAMPLE_FILES = path.resolve(\n __dirname,\n '../templates/native-common-example'\n);\n\nconst NATIVE_FILES = {\n module_new: path.resolve(__dirname, '../templates/native-library-new'),\n view_new: path.resolve(__dirname, '../templates/native-view-new'),\n module_nitro: path.resolve(__dirname, '../templates/nitro-module'),\n} as const;\n\nconst OBJC_FILES = {\n module_common: path.resolve(__dirname, '../templates/objc-library'),\n view_new: path.resolve(__dirname, '../templates/objc-view-new'),\n} as const;\n\nconst KOTLIN_FILES = {\n module_new: path.resolve(__dirname, '../templates/kotlin-library-new'),\n view_new: path.resolve(__dirname, '../templates/kotlin-view-new'),\n} as const;\n\nexport function generateTemplateConfiguration({\n versions,\n basename,\n answers,\n}: {\n versions: TemplateVersions;\n basename: string;\n answers: Answers;\n}): TemplateConfiguration {\n const { slug, languages, type } = answers;\n\n const project = slug.replace(/^(react-native-|@[^/]+\\/)/, '');\n let namespace: string | undefined;\n\n if (slug.startsWith('@') && slug.includes('/')) {\n namespace = slug\n .split('/')[0]\n ?.replace(/[^a-z0-9]/g, '')\n .toLowerCase();\n }\n\n // Create a package identifier with specified namespace when possible\n const pack = `${namespace ? `${namespace}.` : ''}${project\n .replace(/[^a-z0-9]/g, '')\n .toLowerCase()}`;\n\n return {\n versions,\n project: {\n slug,\n description: answers.description,\n name:\n /^[A-Z]/.test(basename) && /^[a-z0-9]+$/i.test(basename)\n ? // If the project name is already in PascalCase, use it as-is\n basename\n : // Otherwise, convert it to PascalCase and remove any non-alphanumeric characters\n `${project.charAt(0).toUpperCase()}${project\n .replace(/[^a-z0-9](\\w)/g, (_, $1) => $1.toUpperCase())\n .slice(1)}`,\n package: pack,\n package_dir: pack.replace(/\\./g, '/'),\n package_cpp: pack.replace(/\\./g, '_'),\n identifier: slug.replace(/[^a-z0-9]+/g, '-').replace(/^-/, ''),\n native: languages !== 'js',\n swift: languages === 'kotlin-swift',\n viewConfig: getViewConfig(type),\n moduleConfig: getModuleConfig(type),\n },\n author: {\n name: answers.authorName,\n email: answers.authorEmail,\n url: answers.authorUrl,\n },\n repo: answers.repoUrl,\n example: answers.example,\n year: new Date().getFullYear(),\n };\n}\n\nfunction getModuleConfig(projectType: ProjectType): ModuleConfig {\n switch (projectType) {\n case 'nitro-module':\n return 'nitro-modules';\n case 'turbo-module':\n return 'turbo-modules';\n default:\n return null;\n }\n}\n\nfunction getViewConfig(projectType: ProjectType): ViewConfig {\n switch (projectType) {\n case 'fabric-view':\n return 'fabric-view';\n default:\n return null;\n }\n}\n\nexport async function applyTemplates(\n answers: Answers,\n config: TemplateConfiguration,\n folder: string\n) {\n const { local } = answers;\n if (local) {\n await applyTemplate(config, COMMON_LOCAL_FILES, folder);\n } else {\n await applyTemplate(config, COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, EXAMPLE_COMMON_FILES, folder);\n\n if (config.project.viewConfig !== null) {\n await applyTemplate(config, EXAMPLE_VIEW_FILES, folder);\n } else {\n await applyTemplate(config, EXAMPLE_MODULE_NEW_FILES, folder);\n }\n }\n }\n\n if (answers.languages === 'js') {\n await applyTemplate(config, JS_FILES, folder);\n await applyTemplate(config, EXPO_FILES, folder);\n } else {\n await applyTemplate(config, NATIVE_COMMON_FILES, folder);\n\n if (config.example !== 'none') {\n await applyTemplate(config, NATIVE_COMMON_EXAMPLE_FILES, folder);\n }\n\n if (config.project.moduleConfig === 'nitro-modules') {\n await applyTemplate(config, NATIVE_FILES['module_nitro'], folder);\n return;\n }\n\n if (config.project.moduleConfig !== null) {\n await applyTemplate(config, NATIVE_FILES[`module_new`], folder);\n } else {\n await applyTemplate(config, NATIVE_FILES[`view_new`], folder);\n }\n\n if (config.project.moduleConfig !== null) {\n await applyTemplate(config, OBJC_FILES[`module_common`], folder);\n } else {\n await applyTemplate(config, OBJC_FILES[`view_new`], folder);\n }\n\n const templateType = `${\n config.project.moduleConfig !== null ? 'module' : 'view'\n }_new` as const;\n\n await applyTemplate(config, KOTLIN_FILES[templateType], folder);\n }\n}\n\n/**\n * This copies the template files and renders them via ejs\n */\nasync function applyTemplate(\n config: TemplateConfiguration,\n source: string,\n destination: string\n) {\n await fs.mkdirp(destination);\n\n const files = await fs.readdir(source);\n\n for (const f of files) {\n let name;\n\n try {\n name = ejs.render(f.replace(/^\\$/, ''), config, {\n openDelimiter: '{',\n closeDelimiter: '}',\n });\n } catch (e) {\n throw new Error(`Failed to render template file name: ${f}`, {\n cause: e,\n });\n }\n\n const target = path.join(destination, name);\n\n const file = path.join(source, f);\n const stats = await fs.stat(file);\n\n if (stats.isDirectory()) {\n await applyTemplate(config, file, target);\n } else if (!BINARIES.some((r) => r.test(file))) {\n const content = await fs.readFile(file, 'utf8');\n\n let result;\n\n try {\n result = ejs.render(content, config);\n } catch (e) {\n throw new Error(`Failed to render template file content: ${f}`, {\n cause: e,\n });\n }\n\n await fs.writeFile(target, result);\n } else {\n await fs.copyFile(file, target);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addNitroDependencyToLocalLibrary = addNitroDependencyToLocalLibrary;
|
|
7
|
+
exports.linkLocalLibrary = linkLocalLibrary;
|
|
8
|
+
exports.promptLocalLibrary = promptLocalLibrary;
|
|
9
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
var _prompt = require("./prompt");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
async function promptLocalLibrary(argv) {
|
|
14
|
+
if (typeof argv.local === 'boolean') {
|
|
15
|
+
return argv.local;
|
|
16
|
+
}
|
|
17
|
+
const packageJsonPath = await findAppPackageJsonPath();
|
|
18
|
+
if (packageJsonPath === null) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// If we're under a project with package.json, ask the user if they want to create a local library
|
|
23
|
+
const answers = await (0, _prompt.prompt)({
|
|
24
|
+
type: 'confirm',
|
|
25
|
+
name: 'local',
|
|
26
|
+
message: `Looks like you're under a project folder. Do you want to create a local library?`,
|
|
27
|
+
initial: true
|
|
28
|
+
});
|
|
29
|
+
return answers.local;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** @returns `true` if successfull */
|
|
33
|
+
async function addNitroDependencyToLocalLibrary(config) {
|
|
34
|
+
if (config.versions.nitroModules === undefined) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const appPackageJsonPath = await findAppPackageJsonPath();
|
|
38
|
+
if (appPackageJsonPath === null) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const appPackageJson = await _fsExtra.default.readJson(appPackageJsonPath);
|
|
42
|
+
const dependencies = appPackageJson['dependencies'] ?? {};
|
|
43
|
+
dependencies['react-native-nitro-modules'] = config.versions.nitroModules;
|
|
44
|
+
appPackageJson['dependencies'] = dependencies;
|
|
45
|
+
await _fsExtra.default.writeJson(appPackageJsonPath, appPackageJson, {
|
|
46
|
+
spaces: 2
|
|
47
|
+
});
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** @returns `true` if successfull */
|
|
52
|
+
async function linkLocalLibrary(config, folder, packageManager) {
|
|
53
|
+
const appPackageJsonPath = await findAppPackageJsonPath();
|
|
54
|
+
if (appPackageJsonPath === null) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const appPackageJson = await _fsExtra.default.readJson(appPackageJsonPath);
|
|
58
|
+
const isReactNativeProject = Boolean(appPackageJson.dependencies?.['react-native']);
|
|
59
|
+
if (!isReactNativeProject) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const dependencies = appPackageJson['dependencies'] ?? {};
|
|
63
|
+
dependencies[config.project.slug] = packageManager === 'yarn' ? `link:./${_path.default.relative(process.cwd(), folder)}` : `file:./${_path.default.relative(process.cwd(), folder)}`;
|
|
64
|
+
await _fsExtra.default.writeJSON(appPackageJsonPath, appPackageJson, {
|
|
65
|
+
spaces: 2
|
|
66
|
+
});
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
async function findAppPackageJsonPath() {
|
|
70
|
+
const cwdPackageJson = _path.default.join(process.cwd(), 'package.json');
|
|
71
|
+
if (!(await _fsExtra.default.pathExists(cwdPackageJson))) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return cwdPackageJson;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","names":["_fsExtra","_interopRequireDefault","require","_path","_prompt","e","__esModule","default","promptLocalLibrary","argv","local","packageJsonPath","findAppPackageJsonPath","answers","prompt","type","name","message","initial","addNitroDependencyToLocalLibrary","config","versions","nitroModules","undefined","appPackageJsonPath","appPackageJson","fs","readJson","dependencies","writeJson","spaces","linkLocalLibrary","folder","packageManager","isReactNativeProject","Boolean","project","slug","path","relative","process","cwd","writeJSON","cwdPackageJson","join","pathExists"],"sources":["../../src/utils/local.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { prompt } from './prompt';\nimport type { TemplateConfiguration } from '../template';\nimport type { Args } from '../input';\n\ntype PackageJson = {\n dependencies?: Record<string, string>;\n};\n\nexport async function promptLocalLibrary(argv: Args): Promise<boolean> {\n if (typeof argv.local === 'boolean') {\n return argv.local;\n }\n\n const packageJsonPath = await findAppPackageJsonPath();\n\n if (packageJsonPath === null) {\n return false;\n }\n\n // If we're under a project with package.json, ask the user if they want to create a local library\n const answers = await prompt({\n type: 'confirm',\n name: 'local',\n message: `Looks like you're under a project folder. Do you want to create a local library?`,\n initial: true,\n });\n\n return answers.local;\n}\n\n/** @returns `true` if successfull */\nexport async function addNitroDependencyToLocalLibrary(\n config: TemplateConfiguration\n): Promise<boolean> {\n if (config.versions.nitroModules === undefined) {\n return false;\n }\n\n const appPackageJsonPath = await findAppPackageJsonPath();\n if (appPackageJsonPath === null) {\n return false;\n }\n\n const appPackageJson: PackageJson = await fs.readJson(appPackageJsonPath);\n const dependencies = appPackageJson['dependencies'] ?? {};\n\n dependencies['react-native-nitro-modules'] = config.versions.nitroModules;\n\n appPackageJson['dependencies'] = dependencies;\n await fs.writeJson(appPackageJsonPath, appPackageJson, {\n spaces: 2,\n });\n\n return true;\n}\n\n/** @returns `true` if successfull */\nexport async function linkLocalLibrary(\n config: TemplateConfiguration,\n folder: string,\n packageManager: string\n): Promise<boolean> {\n const appPackageJsonPath = await findAppPackageJsonPath();\n if (appPackageJsonPath === null) {\n return false;\n }\n\n const appPackageJson: PackageJson = await fs.readJson(appPackageJsonPath);\n\n const isReactNativeProject = Boolean(\n appPackageJson.dependencies?.['react-native']\n );\n\n if (!isReactNativeProject) {\n return false;\n }\n\n const dependencies = appPackageJson['dependencies'] ?? {};\n dependencies[config.project.slug] =\n packageManager === 'yarn'\n ? `link:./${path.relative(process.cwd(), folder)}`\n : `file:./${path.relative(process.cwd(), folder)}`;\n\n await fs.writeJSON(appPackageJsonPath, appPackageJson, {\n spaces: 2,\n });\n\n return true;\n}\n\nasync function findAppPackageJsonPath(): Promise<string | null> {\n const cwdPackageJson = path.join(process.cwd(), 'package.json');\n if (!(await fs.pathExists(cwdPackageJson))) {\n return null;\n }\n\n return cwdPackageJson;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAAkC,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQ3B,eAAeG,kBAAkBA,CAACC,IAAU,EAAoB;EACrE,IAAI,OAAOA,IAAI,CAACC,KAAK,KAAK,SAAS,EAAE;IACnC,OAAOD,IAAI,CAACC,KAAK;EACnB;EAEA,MAAMC,eAAe,GAAG,MAAMC,sBAAsB,CAAC,CAAC;EAEtD,IAAID,eAAe,KAAK,IAAI,EAAE;IAC5B,OAAO,KAAK;EACd;;EAEA;EACA,MAAME,OAAO,GAAG,MAAM,IAAAC,cAAM,EAAC;IAC3BC,IAAI,EAAE,SAAS;IACfC,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE,kFAAkF;IAC3FC,OAAO,EAAE;EACX,CAAC,CAAC;EAEF,OAAOL,OAAO,CAACH,KAAK;AACtB;;AAEA;AACO,eAAeS,gCAAgCA,CACpDC,MAA6B,EACX;EAClB,IAAIA,MAAM,CAACC,QAAQ,CAACC,YAAY,KAAKC,SAAS,EAAE;IAC9C,OAAO,KAAK;EACd;EAEA,MAAMC,kBAAkB,GAAG,MAAMZ,sBAAsB,CAAC,CAAC;EACzD,IAAIY,kBAAkB,KAAK,IAAI,EAAE;IAC/B,OAAO,KAAK;EACd;EAEA,MAAMC,cAA2B,GAAG,MAAMC,gBAAE,CAACC,QAAQ,CAACH,kBAAkB,CAAC;EACzE,MAAMI,YAAY,GAAGH,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EAEzDG,YAAY,CAAC,4BAA4B,CAAC,GAAGR,MAAM,CAACC,QAAQ,CAACC,YAAY;EAEzEG,cAAc,CAAC,cAAc,CAAC,GAAGG,YAAY;EAC7C,MAAMF,gBAAE,CAACG,SAAS,CAACL,kBAAkB,EAAEC,cAAc,EAAE;IACrDK,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,OAAO,IAAI;AACb;;AAEA;AACO,eAAeC,gBAAgBA,CACpCX,MAA6B,EAC7BY,MAAc,EACdC,cAAsB,EACJ;EAClB,MAAMT,kBAAkB,GAAG,MAAMZ,sBAAsB,CAAC,CAAC;EACzD,IAAIY,kBAAkB,KAAK,IAAI,EAAE;IAC/B,OAAO,KAAK;EACd;EAEA,MAAMC,cAA2B,GAAG,MAAMC,gBAAE,CAACC,QAAQ,CAACH,kBAAkB,CAAC;EAEzE,MAAMU,oBAAoB,GAAGC,OAAO,CAClCV,cAAc,CAACG,YAAY,GAAG,cAAc,CAC9C,CAAC;EAED,IAAI,CAACM,oBAAoB,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,MAAMN,YAAY,GAAGH,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EACzDG,YAAY,CAACR,MAAM,CAACgB,OAAO,CAACC,IAAI,CAAC,GAC/BJ,cAAc,KAAK,MAAM,GACrB,UAAUK,aAAI,CAACC,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAET,MAAM,CAAC,EAAE,GAChD,UAAUM,aAAI,CAACC,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAET,MAAM,CAAC,EAAE;EAEtD,MAAMN,gBAAE,CAACgB,SAAS,CAAClB,kBAAkB,EAAEC,cAAc,EAAE;IACrDK,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,OAAO,IAAI;AACb;AAEA,eAAelB,sBAAsBA,CAAA,EAA2B;EAC9D,MAAM+B,cAAc,GAAGL,aAAI,CAACM,IAAI,CAACJ,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;EAC/D,IAAI,EAAE,MAAMf,gBAAE,CAACmB,UAAU,CAACF,cAAc,CAAC,CAAC,EAAE;IAC1C,OAAO,IAAI;EACb;EAEA,OAAOA,cAAc;AACvB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.determinePackageManager = determinePackageManager;
|
|
7
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
async function determinePackageManager() {
|
|
11
|
+
return (await _fsExtra.default.pathExists(_path.default.join(process.cwd(), 'yarn.lock'))) ? 'yarn' : 'npm';
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=packageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.js","names":["_fsExtra","_interopRequireDefault","require","_path","e","__esModule","default","determinePackageManager","fs","pathExists","path","join","process","cwd"],"sources":["../../src/utils/packageManager.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\n\nexport async function determinePackageManager() {\n return (await fs.pathExists(path.join(process.cwd(), 'yarn.lock')))\n ? 'yarn'\n : 'npm';\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjB,eAAeG,uBAAuBA,CAAA,EAAG;EAC9C,OAAO,CAAC,MAAMC,gBAAE,CAACC,UAAU,CAACC,aAAI,CAACC,IAAI,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAC9D,MAAM,GACN,KAAK;AACX","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-react-native-library",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.10",
|
|
4
4
|
"description": "CLI to scaffold React Native libraries",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@types/validate-npm-package-name": "^3.0.3",
|
|
66
66
|
"@types/yargs": "^17.0.10"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "f72b5a30dce522039ec4ac64a2fd347492d351ce"
|
|
69
69
|
}
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"@react-native-community/cli": "15.0.0-alpha.2",
|
|
81
81
|
<% } -%>
|
|
82
82
|
"@react-native/eslint-config": "^0.78.0",
|
|
83
|
+
"@react-native/babel-preset": "0.78.2",
|
|
83
84
|
"@release-it/conventional-changelog": "^9.0.2",
|
|
84
85
|
"@types/jest": "^29.5.5",
|
|
85
86
|
"@types/react": "^19.0.12",
|
|
@@ -170,9 +171,6 @@
|
|
|
170
171
|
"clean": "nitrogen/"
|
|
171
172
|
}
|
|
172
173
|
],
|
|
173
|
-
<% } -%>
|
|
174
|
-
<% if (project.moduleConfig === 'turbo-modules' || project.viewConfig === 'fabric-view') { -%>
|
|
175
|
-
"codegen",
|
|
176
174
|
<% } -%>
|
|
177
175
|
[
|
|
178
176
|
"module",
|
|
@@ -190,13 +188,9 @@
|
|
|
190
188
|
<% if (project.moduleConfig === 'turbo-modules' || project.viewConfig === 'fabric-view') { -%>
|
|
191
189
|
},
|
|
192
190
|
"codegenConfig": {
|
|
193
|
-
"name": "
|
|
191
|
+
"name": "<%- project.name -%><%- project.viewConfig !== null ? 'View': '' -%>Spec",
|
|
194
192
|
"type": "<%- project.viewConfig !== null ? 'all': 'modules' -%>",
|
|
195
193
|
"jsSrcsDir": "src",
|
|
196
|
-
"outputDir": {
|
|
197
|
-
"ios": "ios/generated",
|
|
198
|
-
"android": "android/generated"
|
|
199
|
-
},
|
|
200
194
|
"android": {
|
|
201
195
|
"javaPackageName": "com.<%- project.package %>"
|
|
202
196
|
<% if (example === 'vanilla') { -%>
|
|
@@ -207,9 +201,6 @@
|
|
|
207
201
|
"<%- project.name -%>View": "<%- project.name -%>View"
|
|
208
202
|
}
|
|
209
203
|
<% } -%>
|
|
210
|
-
},
|
|
211
|
-
"includesGeneratedCode": true
|
|
212
|
-
<% } else { -%>
|
|
213
204
|
}
|
|
214
205
|
<% } -%>
|
|
215
206
|
<% } -%>
|
|
@@ -18,13 +18,14 @@ yarn
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
> Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development.
|
|
21
|
-
<% if (project.moduleConfig === 'nitro-modules') { -%>
|
|
22
21
|
|
|
22
|
+
<% if (project.moduleConfig === 'nitro-modules') { -%>
|
|
23
23
|
This project uses Nitro Modules. If you're not familiar with how Nitro works, make sure to check the [Nitro Modules Docs](https://nitro.margelo.com/).
|
|
24
24
|
|
|
25
25
|
You need to run [Nitrogen](https://nitro.margelo.com/docs/nitrogen) to generate the boilerplate code required for this project. The example app will not build without this step.
|
|
26
26
|
|
|
27
27
|
Run **Nitrogen** in following cases:
|
|
28
|
+
|
|
28
29
|
- When you make changes to any `*.nitro.ts` files.
|
|
29
30
|
- When running the project for the first time (since the generated files are not committed to the repository).
|
|
30
31
|
|
|
@@ -33,8 +34,22 @@ To invoke **Nitrogen**, use the following command:
|
|
|
33
34
|
```sh
|
|
34
35
|
yarn nitrogen
|
|
35
36
|
```
|
|
37
|
+
|
|
36
38
|
<% } -%>
|
|
39
|
+
<% if (project.native) { -%>
|
|
40
|
+
You also need to install the required ruby gems for the iOS project with [bundler](https://bundler.io/). To install the gems, run the following command in the root directory:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
bundle install
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Now, you can install [CocoaPods](https://cocoapods.org/) for the iOS project. To do this, run the following command in the `example/ios` directory:
|
|
37
47
|
|
|
48
|
+
```sh
|
|
49
|
+
bundle exec pod install
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
<% } -%>
|
|
38
53
|
The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make.
|
|
39
54
|
|
|
40
55
|
It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app.
|
|
@@ -65,7 +80,6 @@ To run the example app on iOS:
|
|
|
65
80
|
yarn example ios
|
|
66
81
|
```
|
|
67
82
|
|
|
68
|
-
<% if (project.arch === 'new') { -%>
|
|
69
83
|
To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this:
|
|
70
84
|
|
|
71
85
|
```sh
|
|
@@ -74,7 +88,6 @@ Running "<%- project.name -%>Example" with {"fabric":true,"initialProps":{"concu
|
|
|
74
88
|
|
|
75
89
|
Note the `"fabric":true` and `"concurrentRoot":true` properties.
|
|
76
90
|
|
|
77
|
-
<% } -%>
|
|
78
91
|
<% if (!project.native) { -%>
|
|
79
92
|
To run the example app on Web:
|
|
80
93
|
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
|
|
2
|
+
overrides: [
|
|
3
|
+
{
|
|
4
|
+
exclude: /\/node_modules\//,
|
|
5
|
+
presets: ['module:react-native-builder-bob/babel-preset'],
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
include: /\/node_modules\//,
|
|
9
|
+
presets: ['module:@react-native/babel-preset'],
|
|
10
|
+
},
|
|
11
|
+
],
|
|
3
12
|
};
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
"version": "0.0.0",
|
|
4
4
|
"description": "<%- project.description %>",
|
|
5
5
|
"main": "src/index",
|
|
6
|
-
<% if (project.arch === 'new') { -%>
|
|
7
6
|
"codegenConfig": {
|
|
8
|
-
"name": "
|
|
7
|
+
"name": "<%- project.name -%><%- project.viewConfig !== null ? 'View': '' -%>Spec",
|
|
9
8
|
"type": <%- project.viewConfig !== null ? '"all"': '"modules"' %>,
|
|
10
9
|
"jsSrcsDir": "src"
|
|
11
10
|
},
|
|
12
|
-
<% } -%>
|
|
13
11
|
"author": "<%- author.name -%> <<%- author.email -%>> (<%- author.url -%>)",
|
|
14
12
|
"license": "UNLICENSED",
|
|
15
13
|
"homepage": "<%- repo -%>#readme"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const { getDefaultConfig } = require('@react-native/metro-config');
|
|
3
3
|
const { getConfig } = require('react-native-builder-bob/metro-config');
|
|
4
|
-
const pkg = require('../package.json');
|
|
5
4
|
|
|
6
5
|
const root = path.resolve(__dirname, '..');
|
|
7
6
|
|
|
@@ -13,6 +12,5 @@ const root = path.resolve(__dirname, '..');
|
|
|
13
12
|
*/
|
|
14
13
|
module.exports = getConfig(getDefaultConfig(__dirname), {
|
|
15
14
|
root,
|
|
16
|
-
pkg,
|
|
17
15
|
project: __dirname,
|
|
18
16
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const { getDefaultConfig } = require('@expo/metro-config');
|
|
3
3
|
const { getConfig } = require('react-native-builder-bob/metro-config');
|
|
4
|
-
const pkg = require('../package.json');
|
|
5
4
|
|
|
6
5
|
const root = path.resolve(__dirname, '..');
|
|
7
6
|
|
|
@@ -13,6 +12,5 @@ const root = path.resolve(__dirname, '..');
|
|
|
13
12
|
*/
|
|
14
13
|
module.exports = getConfig(getDefaultConfig(__dirname), {
|
|
15
14
|
root,
|
|
16
|
-
pkg,
|
|
17
15
|
project: __dirname,
|
|
18
16
|
});
|