可以用webpack 进行混淆,因为最近的一个项目用electron 写东西,boss想增加一点被破解的成本
source: var webpack = require(‘webpack’); var path = require(‘path’);
let config = { entry: { main: path.resolve(__dirname, ‘src/main.js’) }, output: { path: path.resolve(__dirname, "dist"), publicPath: ‘./dist/’, libraryTarget: ‘commonjs’, filename: ‘[name].js’ }, module: { loaders: [ { test: /.json$/, loader: ‘json’ }, {test: /.js?$/, loader: ‘babel’, exclude: /node_modules/}, { test: /.(png|jpe?g|gif|svg)(?.*)?$/, loader: ‘url?limit=1’ } ] }, vue: { loaders: {} }, babel: { presets: [‘es2015’], plugins: [‘transform-runtime’] }, plugins: [ new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false }, mangle: { except: [’$super’, ‘$’, ‘exports’, ‘require’] } }) ], watchOptions: { aggregateTimeout: 1000, poll: 2000 }, resolve: { alias: { reportConf: path.resolve(__dirname, ‘./src/config.js’) } }, externals: { "fs": "fs", "url": "url", "path": "path", "crypto": "crypto", "async": "async", "canvas": "canvas", "gm": "gm", "xlsx": "xlsx", "lodash": "lodash", "mkdirp": "mkdirp", "pdfkit": "pdfkit", "electron": "electron", "node-notifier": "node-notifier", "electron-json-storage": "electron-json-storage" } };
if (process.env.NODE_ENV == ‘dev’) { config.resolve.alias.reportConf = path.resolve(__dirname, ‘./src/config.dev.js’); }
module.exports = config;
说明 : libraryTarget: ‘commonjs’, 打包方式 externals:{ ... },排除引用到的node_module new webpack.optimize.UglifyJsPlugin 核心了
当然也可以用gulp ,grunt 等进行, 实现的效果就是,你的整个node_module 被压缩,混淆在一个min.js 里面了