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",
- },
- },
- },
- },
- };
|