unlinkAssets.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = unlinkAssetsIOS;
  6. function _fs() {
  7. const data = _interopRequireDefault(require("fs"));
  8. _fs = function () {
  9. return data;
  10. };
  11. return data;
  12. }
  13. function _path() {
  14. const data = _interopRequireDefault(require("path"));
  15. _path = function () {
  16. return data;
  17. };
  18. return data;
  19. }
  20. function _xcode() {
  21. const data = _interopRequireDefault(require("xcode"));
  22. _xcode = function () {
  23. return data;
  24. };
  25. return data;
  26. }
  27. function _lodash() {
  28. const data = require("lodash");
  29. _lodash = function () {
  30. return data;
  31. };
  32. return data;
  33. }
  34. var _getPlist = _interopRequireDefault(require("./getPlist"));
  35. var _writePlist = _interopRequireDefault(require("./writePlist"));
  36. function _cliTools() {
  37. const data = require("@react-native-community/cli-tools");
  38. _cliTools = function () {
  39. return data;
  40. };
  41. return data;
  42. }
  43. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  44. /**
  45. * Copyright (c) Facebook, Inc. and its affiliates.
  46. *
  47. * This source code is licensed under the MIT license found in the
  48. * LICENSE file in the root directory of this source tree.
  49. *
  50. */
  51. /**
  52. * Unlinks assets from iOS project. Removes references for fonts from `Info.plist`
  53. * fonts provided by application and from `Resources` group
  54. */
  55. function unlinkAssetsIOS(files, projectConfig) {
  56. const project = _xcode().default.project(projectConfig.pbxprojPath).parseSync();
  57. const assets = (0, _cliTools().groupFilesByType)(files);
  58. const plist = (0, _getPlist.default)(project, projectConfig.sourceDir);
  59. if (!plist) {
  60. _cliTools().logger.error('Could not locate "Info.plist" file. Check if your project has "INFOPLIST_FILE" set properly');
  61. return;
  62. }
  63. if (!project.pbxGroupByName('Resources')) {
  64. _cliTools().logger.error('Group "Resources" does not exist in your Xcode project. There is nothing to unlink.');
  65. return;
  66. }
  67. const removeResourceFiles = (f = []) => (f || []).map(asset => {
  68. _cliTools().logger.debug(`Unlinking asset ${asset}`);
  69. return project.removeResourceFile(_path().default.relative(projectConfig.sourceDir, asset), {
  70. target: project.getFirstTarget().uuid
  71. });
  72. }).map(file => file.basename);
  73. removeResourceFiles(assets.image);
  74. const fonts = removeResourceFiles(assets.font); // @ts-ignore Type mismatch
  75. plist.UIAppFonts = (0, _lodash().difference)(plist.UIAppFonts || [], fonts);
  76. _fs().default.writeFileSync(projectConfig.pbxprojPath, project.writeSync());
  77. (0, _writePlist.default)(project, projectConfig.sourceDir, plist);
  78. }
  79. //# sourceMappingURL=unlinkAssets.js.map