123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- const path = require("path");
- const fs = require("fs");
- const { CleanWebpackPlugin } = require("clean-webpack-plugin");
- const JavascriptObfuscator = require("webpack-obfuscator");
- const AutoxHeaderWebpackPlugin = require("autox-header-webpack-plugin");
- const WatchDeployPlugin = require("autox-deploy-webpack-plugin");
- const CopyPlugin = require('copy-webpack-plugin');
- var scriptConfig = require('./scriptConfig.js');
- var headerFile = path.resolve(__dirname, scriptConfig.header);
- var headerText = fs.readFileSync(headerFile, "utf8").trim();
- var dist = "./dist";
- var entry = {};
- var copyPatterns = [];
- var projectsMain={};
- scriptConfig.projects.forEach(project => {
- if (!project.compile) {
- return false;
- }
- var projectName = project.name;
- var outProjectName = scriptConfig.projectPrefix + project.name;
- projectsMain[projectName]=project.main
-
- var entryPathName = path.posix.resolve(scriptConfig.baseDir, projectName, project.main);
- var outPathName = path.posix.resolve("/", outProjectName, project.main);
- outPathName = outPathName.replace(".js", "").replace('.ts','');
- entry[outPathName] = entryPathName;
- if(project.others){
- for (let index = 0; index < project.others.length; index++) {
- const fileName = project.others[index];
- const outFileName=path.posix.resolve("/", outProjectName, fileName).replace('.js','').replace('.ts','');
- entry[outFileName] = path.posix.resolve(scriptConfig.baseDir, projectName, fileName);
- }
- }
-
- var fromPath = path.posix.resolve(scriptConfig.baseDir, projectName).replace(/\\/g, '/') + "";
- var toPath = path.posix.resolve(dist, outProjectName).replace(/\\/g, '/') + "";
- var pattern = {
- from: fromPath,
- to: toPath,
- globOptions: {
- ignore: ['**/*.js', '**/*.ts']
- }
- };
-
- copyPatterns.push(pattern);
- });
- module.exports = function (env, argv) {
- var prod = argv.mode == 'production'
- return {
- entry: entry,
- output: {
- filename: "[name].js",
- path: path.resolve(__dirname, dist),
- },
- target: scriptConfig.target,
- mode: argv.mode,
- devtool: prod ? 'none' : 'none',
- optimization: {
- minimize: false
- },
- plugins: [
- new JavascriptObfuscator({
- compact: prod,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- reservedNames: ['main'],
-
-
-
- rotateStringArray: prod,
- seed: 0,
-
-
-
-
-
-
-
-
-
-
-
-
- stringArrayThreshold: 0.75,
-
- target: 'node',
-
-
-
-
- }),
- new AutoxHeaderWebpackPlugin({
- base64: scriptConfig.base64,
- advancedEngines: scriptConfig.advancedEngines,
- header: headerText
- }),
- new WatchDeployPlugin({
- type: scriptConfig.watch,
- projects:projectsMain
- }),
- new CleanWebpackPlugin({
- cleanStaleWebpackAssets: false,
- protectWebpackAssets: false,
- cleanOnceBeforeBuildPatterns: [],
- cleanAfterEveryBuildPatterns: ["bundle.js"],
- }),
- new CopyPlugin({
- patterns: copyPatterns,
- }),
- ],
- module: {
- rules: [
- {
- test: /\.js$/,
- exclude: /node_modules/,
- use: [
- {
- loader: "babel-loader",
- },
- {
- loader: "webpack-autojs-loader",
- }
- ],
- },
- {
- test: /\.ts$/,
- exclude: /node_modules/,
- use: {
- loader: "ts-loader",
- },
- },
- ],
- },
- };
- }
|