iOS开发React Native

RN 中利用NodeJS修改文件内容

2019-03-14  本文已影响0人  liluo风

公司大佬 教我如何在RN项目中利用NodeJS修改三方库文件或者三方库的原生配置文件中的内容

备注:此方式 是在你无法替换三方库 以及 无法控制使用的库文件代码 的不得已情况才使用的,如果你有更好的方式欢迎留言

使用场景:

1、 当你使用的第三方库中的内容出了BUG或者不符合你的使用情况;
2、 当你三方库的原生代码的配置文件中出现了不符合你的版本信息的情况;
3、 等等其他情况,都可以使用这种方式修改;


例子:修改修改库文件中(Android部分)gradle 中的内容

步骤:

1、写一个工具类的JS文件:fix-gradle.js
const fs = require('fs');
const path = require('path');

const projectPath = `${__dirname}/../..`;

const qqFile = '/node_modules/@pangu/react-native-qq/android/build.gradle';
const qqformPath = path.resolve(projectPath + qqFile);
try {
  let fileContent = fs.readFileSync(qqformPath, 'utf-8');
  const originValue1 = /buildToolsVersion "23.0.1"/g;
  const replaceValue1 = "buildToolsVersion '26.0.3'";
  fileContent = fileContent.replace(originValue1, replaceValue1);

  const originValue2 = /compileSdkVersion 23/g;
  const replaceValue2 = 'compileSdkVersion 26';
  fileContent = fileContent.replace(originValue2, replaceValue2);

  const originValue3 = / implementation /g;
  const replaceValue3 = ' compile ';
  fileContent = fileContent.replace(originValue3, replaceValue3);

  fs.writeFileSync(qqformPath, fileContent, 'utf8');
  console.log('🎉 🎉 🎉, react-native-qq 🐛 is fixed 👍👍👍.');
} catch (e) {
  console.log('error react-native-qq ', e);
}
2、在package.json中配置命令
{
  "version": "7.1.0",
  "private": true,
  "scripts": {
      //...
    "fix-gradle": "node src/utils/fix-gradle.js",
      //...
  },
//...
}
3、在终端中使用该命令
 yarn fix-gradle
执行情况
上一篇 下一篇

猜你喜欢

热点阅读