美文网首页iOS开发React Native
RN 中利用NodeJS修改文件内容

RN 中利用NodeJS修改文件内容

作者: liluo风 | 来源:发表于2019-03-14 18:30 被阅读0次

    公司大佬 教我如何在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
    
    执行情况

    相关文章

      网友评论

        本文标题:RN 中利用NodeJS修改文件内容

        本文链接:https://www.haomeiwen.com/subject/vkvcmqtx.html