| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							- const path = require("path");
 - const webpack = require("webpack");
 - const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 - const HtmlWebpackPlugin = require("html-webpack-plugin");
 - const HappyPack = require("happypack");
 - const os = require("os");
 - const happyThreadPool = HappyPack.ThreadPool({
 -   size: os.cpus().length,
 - });
 - 
 - const common = require("./common");
 - const pathVars = require("./pathVars");
 - const pageVars = require("./pageVars");
 - 
 - //---------------------------------- output -----------------------------------//
 - const packageJson = require("./../package.json");
 - const entryConfig = {
 -   /*第三方库*/
 -   //vendor: Object.keys(packageJson.dependencies)
 - };
 - 
 - let pages = pageVars.getPages();
 - //console.log("pages", pages);
 - pages.forEach(function (page) {
 -   entryConfig[page["chunkName"]] = page["entryJs"];
 - });
 - 
 - //---------------------------------- output -----------------------------------//
 - 
 - let outputConfig = {
 -   path: pathVars.distPath,
 -   //publicPath: "./", // 表示资源的发布地址,当配置过该属性后,打包文件中所有通过相对路径引用的资源都会被配置的路径所替换(如:css中背景图的路径)
 -   filename: "[name]/index.js",
 -   assetModuleFilename: "images/[name]_[hash][ext][query]",
 -   //chunkFilename: '[name]/index_[hash].chunk.js'
 - };
 - 
 - //---------------------------------- plugin -----------------------------------//
 - let pluginConfig = [
 -   // new webpack.ProvidePlugin({
 -   //   THREE: require.resolve("three"),
 -   // }),
 -   // new webpack.DllReferencePlugin({
 -   //   context: pathVars.rootPath,
 -   //   manifest: require(pathVars.dllPath + "/manifest.json"),
 -   // }),
 -   new MiniCssExtractPlugin({
 -     filename: "[name]/index.css",
 -   }),
 -   new HappyPack({
 -     id: "babel",
 -     loaders: ["babel-loader"],
 -     threadPool: happyThreadPool,
 -   }),
 - ];
 - 
 - pages.forEach(function (page) {
 -   let htmlPlugin = new HtmlWebpackPlugin({
 -     title: "page1",
 -     template: page["filePath"],
 -     filename: page["htmlName"],
 -     inject: "body",
 -     chunks: [page["chunkName"]],
 -   });
 -   console.log(page);
 -   pluginConfig.push(htmlPlugin);
 - });
 - 
 - //console.log("pluginConfig", pluginConfig);
 - 
 - module.exports = {
 -   cache: {
 -     type: "filesystem",
 -  },
 -   mode: "development",
 -   entry: entryConfig,
 -   //output属性与webpack-dev-server有冲突
 -   output: outputConfig,
 -   resolve: common.resolve,
 -   devServer: {
 -     compress: true,
 -     static: {
 -       directory: pathVars.devPath,
 -       publicPath: "/",
 -     },
 -     hot: true,
 -     host: "localhost",
 -     // host: '192.168.1.115',
 -     // host: '192.168.1.63',
 -     port: 6002,
 -     proxy: {
 -       '/api': {  // 代理路径
 -           target: 'http://192.168.1.33:9100', // 目标地址
 -           changeOrigin: true, // 允许跨域
 -           pathRewrite: { '^/api': '' }, // 重写路径
 -       },
 -   },
 -   },
 -   module: {
 -     rules: [
 -       {
 -         test: /\.(css|less)$/,
 -         include: [pathVars.srcPath],
 -         exclude: [pathVars.nodeModulesPath],
 -         use: [
 -           {
 -             loader: MiniCssExtractPlugin.loader,
 -             options: {
 -               /* 解决css背景图路径问题 由于图片目录已经定好了,因此这里可以用固定的相对路径*/
 -               publicPath: "../",
 -             },
 -           },
 -           //"css-loader?modules&localIdentName=[name]__[local]-[hash:base64:5]",
 -           "css-loader",
 -           "less-loader",
 -         ],
 -       },
 -       {
 -         test: /\.tpl$/i,
 -         use: [
 -           {
 -             loader: "raw-loader",
 -             options: {
 -               esModule: false,
 -             },
 -           },
 -         ],
 -       },
 -       {
 -         test: /\.js$/,
 -         exclude: pathVars.nodeModulesPath,
 -         include: pathVars.srcPath,
 -         use: ["babel-loader"],
 -         //use: ["happypack/loader?id=babel"]
 -       },
 -       {
 -         test: /\.(png|jpg|gif|woff|svg|eot|ttf|woff2)$/,
 -         type: "asset/resource",
 -         parser: {
 -           dataUrlCondition: {
 -             maxSize: 10 * 1024,
 -           },
 -         },
 -         //利用HappyPack打包,图片会损坏。暂时不使用
 -         //use: ["happypack/loader?id=url"]
 -       },
 -       {
 -         test: /\.(glsl|vs|fs|vert|frag)$/,
 -         exclude: [pathVars.nodeModulesPath, pathVars.dllPath],
 -         use: ["raw-loader", "glslify-loader"],
 -       },
 -     ],
 -   },
 -   plugins: pluginConfig,
 -   optimization: {
 -     runtimeChunk: "single",
 -     splitChunks: {
 -       chunks: "all",
 -       cacheGroups: {
 -         vendor: {
 -           test: /[\\/]node_modules[\\/]/,
 -           name: "vendor",
 -           chunks: "all",
 -         },
 -       },
 -     },
 -   },
 - };
 
 
  |