8000 GitHub - byrizki/metro-minify-obfuscator · GitHub
[go: up one dir, main page]

Skip to content

About

No description, website, or topics provided.

Resources

Stars

11 stars

Watchers

2 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

metro-minify-obfuscator

A metro minifier based on javascript-obfuscator for React Native

Installation

yarn add -D metro-minify-obfuscator

or

npm i --save-dev metro-minify-obfuscator

Usage for React Native 0.73+

module.exports = {
  transformer: {
    ...
    minifierPath: 'metro-minify-obfuscator',
    minifierConfig: {
      defaultMinifierPath: require('metro-minify-terser'),
      filter: (filename) => true,
      includeNodeModules: true,
      trace: false,
      obfuscatorOptions: {
        // put additional javscript-obfuscator configuration here
      }
    },
  },
};

Usage for React Native versions below 0.73

module.exports = {
  transformer: {
    ...
    minifierPath: 'metro-minify-obfuscator', // <- add this
    minifierConfig: {
      defaultMinifierPath: require('metro-minify-uglify'), // required if filter/includeNodeModules options is set, can be metro-minify-uglify or metro-minify-terser dependes on RN version / available installed minifier
      filter: (filename) => true, // return true to obfuscate
      includeNodeModules: true, // set false to ignore node_modules from obfuscation
      trace: false, // show output log
      obfuscatorOptions: {
        // put additional javscript-obfuscator configuration here
      }
    },
  },
};
  • you can add additional obfuscation config to the minifierConfig properties (⚠️ NOT ALL OPTION IS GUARANTEED WORKING ON REACT-NATIVE, IT MIGHT BREAK YOUR APPS 🙈 )
  • run packager with --reset-cache argument to clear metro cache

Minifier Notes

  • For React Native 0.73+, it's highly recommended to use metro-minify-terser as the default minifier
  • Terser provides better support for modern JavaScript ES6+ features and improved performance
  • For React Native versions below 0.73, you can continue using metro-minify-uglify

Default Options

{
  "stringArray": false,
  "compact": true,
  "controlFlowFlattening": true,
  "controlFlowFlatteningThreshold": 0.75,
  "identifierNamesGenerator": "hexadecimal",
  "numbersToExpressions": true,
  "splitStrings": true,
  "splitStringsChunkLength": 3,
  "transformObjectKeys": true,
  "simplify": true,
  "disableConsoleOutput": true,
  "log": false,
  "selfDefending": true,
  "unicodeEscapeSequence": true
}

Comparison with other libraries

Release History

  • v1.0.x - Add additional option to filter / exclude node_modules file from obfuscation. ⚠️ upgrading to this version need update to your metro.config.js please be aware

  • v0.x.x - Initial fork from metro-minify-uglify configured with JSO library

About

No description, website, or topics provided.

Resources

Stars

11 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0