javascript-obfuscator / javascript-obfuscator/webpack-obfuscator

How to onfuscate only my own code using webpack-obfuscator?

Abierto
#178 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
928
Forks
92
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I'm building an electron application using TypeScript and WebPack. I want to process my own code without touching any 3rd party dependencies in order to rename only my own classes property names.

I've tried to use two approaches but with no success:
1) Using plugin

```typescript
import path from 'node:path';
import type { Configuration } from 'webpack';

import { rules } from './webpack.rules';
import WebpackObfuscator from 'webpack-obfuscator';

export const mainConfig: Configuration = {
/**
* This is the main entry point for your application, it's the first file
* that runs in the main process.
*/
entry: "./src/index.ts",
// Put your normal webpack config below here
module: {
rules
},
plugins: [
new WebpackObfuscator({
sourceMap: true,
renameProperties: true,
rotateStringArray: true
}, "node_modules/")
],
resolve: {
extensions: [".js", ".ts", ".jsx", ".tsx", ".css", ".json"],
// Workaround to make import aliases ("paths" from tscondig.json) work
// https://stackoverflow.com/a/75373097/6698055
alias: {
"@domain": path.resolve(__dirname, "src/domain"),
"@platform": path.resolve(__dirname, "src/platform"),
"@build_src": path.resolve(__dirname, "build_src")
}
}
};
```

2) Using loader

```typescript
import type { ModuleOptions } from 'webpack';
import WebpackObfuscator from 'webpack-obfuscator';
import path from 'node:path'

export const rules: Required["rules"] = [
// Add support for native node modules
{
// We're specifying native_modules in the test because the asset relocator loader generates a
// "fake" .node file which is really a cjs file.
test: /native_modules[/\\].+\.node$/,
use: "node-loader"
},
{
test: /[/\\]node_modules[/\\].+\.(m?js|node)$/,
parser: { amd: false },
use: {
loader: "@vercel/webpack-asset-relocator-loader",
options: {
outputAssetBase: "native_modules"
}
}
},
{
test: /\.js$/,
enforce: 'post', // Ensure this loader will be called after normal loaders
use: {
loader: WebpackObfuscator.loader,
options: {
rotateStringArray: true,
renameProperties: true
}
}
}
];
```

How can I force WebPack to process only my own code without touching any dependencies?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con la configuración principal de webpack y las reglas de webpack.rules, centrándote en las coincidencias de plugins y loaders para los módulos empaquetados. Ejecuta la compilación de webpack de Electron e inspecciona su salida para determinar qué módulos están ofuscados. Se considera terminado cuando se procesa el código TypeScript propio de la aplicación, mientras que las dependencias de terceros permanecen sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
electron, typescript, webpack
Área
build-system, desktop
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.