mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-07 23:27:05 +08:00
Further RNPM integration
Summary: This commit removes `rnpm` folder that we left during initial merge to keep the diff cleaner. The `core`, `link` and `install` have now the same directory structure as any other command to make development more natural for all of us. From most notable differences: 1) the `src` folder is now gone. The new structure should make it easier for people to work with the stuff and also move us closer to 100% rnpm integration, 2) There's also no `package.json` present in any of the `rnpm` packages, since they are no longer standalone modules, 3) There's no `bugs.url` in link.js since main package.json of React doesn't specify it. Decided to hardcode it to facebook/react-native since it's really unlikely to change. If one would prefer to use pkg.bugs.url as before, a separate PR modifying package.json should be sent. Closes https://github.com/facebook/react-native/pull/9509 Differential Revision: D3751115 fbshipit-source-id: 74ae8330f7634df0887ad676808f47eee4b8de85
This commit is contained in:
committed by
Facebook Github Bot 3
parent
25f2a26ce9
commit
0af640bfae
56
local-cli/link/ios/registerNativeModule.js
Normal file
56
local-cli/link/ios/registerNativeModule.js
Normal file
@@ -0,0 +1,56 @@
|
||||
const xcode = require('xcode');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const log = require('npmlog');
|
||||
|
||||
const addToHeaderSearchPaths = require('./addToHeaderSearchPaths');
|
||||
const getHeadersInFolder = require('./getHeadersInFolder');
|
||||
const getHeaderSearchPath = require('./getHeaderSearchPath');
|
||||
const getProducts = require('./getProducts');
|
||||
const createGroupWithMessage = require('./createGroupWithMessage');
|
||||
const addFileToProject = require('./addFileToProject');
|
||||
const addProjectToLibraries = require('./addProjectToLibraries');
|
||||
const addSharedLibraries = require('./addSharedLibraries');
|
||||
const isEmpty = require('lodash').isEmpty;
|
||||
const getGroup = require('./getGroup');
|
||||
|
||||
/**
|
||||
* Register native module IOS adds given dependency to project by adding
|
||||
* its xcodeproj to project libraries as well as attaching static library
|
||||
* to the first target (the main one)
|
||||
*
|
||||
* If library is already linked, this action is a no-op.
|
||||
*/
|
||||
module.exports = function registerNativeModuleIOS(dependencyConfig, projectConfig) {
|
||||
const project = xcode.project(projectConfig.pbxprojPath).parseSync();
|
||||
const dependencyProject = xcode.project(dependencyConfig.pbxprojPath).parseSync();
|
||||
|
||||
const libraries = createGroupWithMessage(project, projectConfig.libraryFolder);
|
||||
const file = addFileToProject(
|
||||
project,
|
||||
path.relative(projectConfig.sourceDir, dependencyConfig.projectPath)
|
||||
);
|
||||
|
||||
addProjectToLibraries(libraries, file);
|
||||
|
||||
getProducts(dependencyProject).forEach(product => {
|
||||
project.addStaticLibrary(product, {
|
||||
target: project.getFirstTarget().uuid,
|
||||
});
|
||||
});
|
||||
|
||||
addSharedLibraries(project, dependencyConfig.sharedLibraries);
|
||||
|
||||
const headers = getHeadersInFolder(dependencyConfig.folder);
|
||||
if (!isEmpty(headers)) {
|
||||
addToHeaderSearchPaths(
|
||||
project,
|
||||
getHeaderSearchPath(projectConfig.sourceDir, headers)
|
||||
);
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
projectConfig.pbxprojPath,
|
||||
project.writeSync()
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user