JSPM

obfuscator-io-metro-plugin

2.1.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6936
  • Score
    100M100P100Q137148F
  • License MIT

A metro plugin to use javascript-obfuscator library with react-native

Package Exports

  • obfuscator-io-metro-plugin
  • obfuscator-io-metro-plugin/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (obfuscator-io-metro-plugin) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Obfuscator.io Metro Plugin

npm version npm PRs welcome!

This metro plugin obfuscate your React Native bundle using javascript-obfuscator
It only obfuscates your code not the code of node_modules, you can verify the obfuscated bundle by either extracting the index.android.bundle from generated apk or you can find the file at project_root\android\app\build\generated\assets\react\release after assembleRelease process

for iOS if you’re facing any issue check this comment by @andresarezo

Installation

 npm i -D obfuscator-io-metro-plugin

Docs

Docs

Usage

Include the plugin in your metro.config.js:

const jsoMetroPlugin = require("obfuscator-io-metro-plugin")(
  {
    // for these option look javascript-obfuscator library options from  above url
    compact: false,
    sourceMap: false, // source Map generated after obfuscation is not useful right now so use default value i.e. false
    controlFlowFlattening: true,
    controlFlowFlatteningThreshold: 1,
    numbersToExpressions: true,
    simplify: true,
    stringArrayShuffle: true,
    splitStrings: true,
    stringArrayThreshold: 1,
  },
  {
    runInDev: false /* optional */,
    logObfuscatedFiles: true /* optional generated files will be located at ./.jso */,
  }
);

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
  ...jsoMetroPlugin,
};

For obfuscation options configuration docs see: https://github.com/javascript-obfuscator/javascript-obfuscator