javascript - 编译或混淆 Node js

标签 javascript node.js

我有一个现有的 Node js 后端,需要在客户本地部署。我想在传递给客户端之前编译/混淆代码。

我不知道它是否“可编译”。 但至少我只想将单个合并代码放入 index.js 文件(其他 javascript 文件全部删除)中,并在传递给客户端之前对其进行混淆。 是否有任何现有的 npm 模块可以做到这一点,以及混淆后的代码与原始代码一样工作的可靠性如何。

当您需要传递可在客户端部署的现有 Node js 源代码时,您的公司/处理方式是什么。

我更关注可以自动化整个过程的现有库。 例如: npx run obfuscate-code --entrypoint.js (它将搜索来自 Node js 的所有导入/需要并编译所有内容。

Folder structure is as follow.
    home
     - controllers (folder)
       - file1.js
       - file2.js
     - languages (folder)
       - en.js
     - services (folder)
       - service1.js
       - service2.js
     - index.js (entry point)

最佳答案

您可以使用 PKG(npm 包)创建可执行文件,请参阅 => https://github.com/zeit/pkg

或者 webpack 如果你想制作一个最小化的单个 js 文件。

// webpack.config.js
const nodeExternals = require('webpack-node-externals');

module.exports = {
    mode: 'production',
    target: 'node',
    externals: [nodeExternals()],
    entry: {
        'build/output': './src/index.js'
    },
    output: {
        path: __dirname,
        filename: '[name].bundle.js',
        libraryTarget: 'commonjs2'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: [
                            ['env', {
                                'targets': {
                                    'node': 'current'
                                }
                            }]
                        ]
                    }
                }
            }]
    }
};

通过使用nodeExternals,您不会将外部依赖项放入主js文件中,而是引用node_modules。

您可以使用 npm run ... 来使用这两个解决方案,方法是将它们添加到 package.json 中的脚本部分

关于javascript - 编译或混淆 Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61837125/

相关文章:

javascript - 图像应使用 jquery 或 javascript 跟随触摸位置

javascript - 与 Regex JS 模式混淆

php - Facebook 应用程序生成器

node.js - 如何更改谷歌电子表格列和行的格式?

javascript - Node.js Express 特定路由与顶级通用解析

javascript - 为什么可以在 javascript 中减去 Date 对象?是否有任何形式的运算符重载?

javascript - 取消 jQuery 中的 $ ('form' ).submit() 调用

node.js - Router.use()需要中间件功能

javascript - 为什么方法 'readdirSync' 在读取包含大量文件的目录时会占用这么多内存?

node.js - Chocolatey 可以识别手动安装的 nodejs 吗?