| | |
| | | 'use strict' |
| | | const glob = require('glob') |
| | | const pages = {} |
| | | const IS_VENDOR = /[\\/]node_modules[\\/]/ |
| | | const pageVendor = {} |
| | | "use strict"; |
| | | const glob = require("glob"); |
| | | const pages = {}; |
| | | const IS_VENDOR = /[\\/]node_modules[\\/]/; |
| | | const pageVendor = {}; |
| | | |
| | | glob.sync('./src/pages/**/main.ts').forEach(path => { |
| | | const chunk = path.split('./src/pages/')[1].split('/main.ts')[0] |
| | | const chunk_vendor = `${chunk}-vendors` |
| | | const chunk_common = `${chunk}-common` |
| | | const pkg = require("./package.json"); |
| | | const timestamp = new Date().getTime(); |
| | | const queryStr = `?v=${pkg.version}&t=${timestamp}`; |
| | | |
| | | glob.sync("./src/pages/**/main.ts").forEach((path) => { |
| | | const chunk = path.split("./src/pages/")[1].split("/main.ts")[0]; |
| | | const chunk_vendor = `${chunk}-vendors`; |
| | | const chunk_common = `${chunk}-common`; |
| | | pages[chunk] = { |
| | | entry: path, |
| | | template: 'public/index.html', |
| | | title: chunk == 'desktop/index' ? 'SmartAI' : chunk, |
| | | chunks: [chunk_vendor, 'chunk-common', chunk] |
| | | } |
| | | if (chunk != 'index') { |
| | | pages[chunk].filename = 'view/' + chunk + '.html' |
| | | template: "public/index.html", |
| | | title: chunk == "desktop/index" ? "SmartAI" : chunk, |
| | | chunks: [chunk_vendor, "chunk-common", chunk], |
| | | }; |
| | | if (chunk != "index") { |
| | | pages[chunk].filename = "view/" + chunk + ".html"; |
| | | } |
| | | |
| | | pageVendor[chunk_vendor] = { |
| | | name: chunk_vendor, |
| | | priority: -11, |
| | | chunks: c => c.name === chunk, |
| | | chunks: (c) => c.name === chunk, |
| | | test: /\.js$/, |
| | | enforce: true |
| | | } |
| | | enforce: true, |
| | | }; |
| | | |
| | | // pageVendor[chunk_common] = { |
| | | // name: chunk_common, |
| | |
| | | // reuseExistingChunk: true, |
| | | // enforce: true |
| | | // } |
| | | }) |
| | | }); |
| | | |
| | | // const serverUrl = "http://58.118.225.79:41243" // 羊五 |
| | | //const serverUrl = "http://192.168.20.117:7009" |
| | | // const serverUrl = "http://192.168.20.10:7009"; |
| | | const serverUrl = "http://192.168.20.116:7009"; |
| | | module.exports = { |
| | | pages, |
| | | chainWebpack: config => { |
| | | config.plugins.delete('named-chunks') |
| | | if (process.env.NODE_ENV === 'production') { |
| | | config.output.filename('js/[name].js').end() |
| | | config.output.chunkFilename('js/[name].js').end() |
| | | chainWebpack: (config) => { |
| | | config.plugins.delete("named-chunks"); |
| | | if (process.env.NODE_ENV === "production") { |
| | | config.output.filename("js/[name].js" + queryStr).end(); |
| | | config.output.chunkFilename("js/[name].js" + queryStr).end(); |
| | | // 修改生产配置 |
| | | config.plugin('extract-css').tap(() => [ |
| | | config.plugin("extract-css").tap(() => [ |
| | | { |
| | | filename: `css/[name].css`, |
| | | chunkFilename: `css/[name].css` |
| | | } |
| | | ]) |
| | | filename: `css/[name].css${queryStr}`, |
| | | chunkFilename: `css/[name].css${queryStr}`, |
| | | }, |
| | | ]); |
| | | } |
| | | |
| | | config.optimization.splitChunks({ |
| | | cacheGroups: pageVendor |
| | | }) |
| | | cacheGroups: pageVendor, |
| | | }); |
| | | |
| | | // config.module.rule('fonts').use('url-loader').loader('file-loader').options({ name: 'fonts/[name].[ext]', publicPath: '../' }) |
| | | //config.module.rule('fonts').use('url-loader').loader('file-loader').options({ name: 'fonts/[name].[ext]', outputPath: '../' }) |
| | |
| | | filenameHashing: false, |
| | | pwa: { |
| | | iconPaths: { |
| | | favicon32: 'favicon.ico', |
| | | favicon16: 'favicon.ico' |
| | | } |
| | | favicon32: "favicon.ico", |
| | | favicon16: "favicon.ico", |
| | | }, |
| | | }, |
| | | devServer: { |
| | | proxy: { |
| | | '/track': { |
| | | target: 'http://192.168.20.10:8000', |
| | | "/track": { |
| | | target: serverUrl, |
| | | // ws: true, |
| | | changeOrigin: true, |
| | | }, |
| | | '/ws': { |
| | | target: 'http://192.168.20.10:7003', |
| | | "/ws": { |
| | | target: serverUrl, |
| | | // ws: true, |
| | | changeOrigin: true, |
| | | }, |
| | | "/data/api-v/app/findAllApp": { |
| | | // target: '/', |
| | | target: 'http://localhost:8080/', |
| | | target: "/", |
| | | //target: 'http://localhost:8080/', |
| | | changeOrigin: true, |
| | | pathRewrite: { |
| | | '^/data/api-v/app/findAllApp': 'apps.json' |
| | | } |
| | | "^/data/api-v/app/findAllApp": "apps.json", |
| | | }, |
| | | }, |
| | | "/api-c": { |
| | | target: 'http://192.168.20.113:8002', |
| | | changeOrigin: true |
| | | target: serverUrl, |
| | | changeOrigin: true, |
| | | }, |
| | | "/api-v": { |
| | | target: 'http://192.168.20.10:8000', |
| | | changeOrigin: true |
| | | target: serverUrl, |
| | | changeOrigin: true, |
| | | }, |
| | | "/api-f": { |
| | | target: 'http://192.168.20.10:8011', |
| | | target: serverUrl, |
| | | // secure: false, |
| | | changeOrigin: true |
| | | changeOrigin: true, |
| | | }, |
| | | "/api-p": { |
| | | target: 'http://192.168.5.23:8010', |
| | | target: serverUrl, |
| | | // secure: false, |
| | | changeOrigin: true |
| | | changeOrigin: true, |
| | | }, |
| | | "/api-u": { |
| | | target: 'http://192.168.20.10:8000', |
| | | changeOrigin: true |
| | | target: serverUrl, |
| | | changeOrigin: true, |
| | | }, |
| | | "/httpImage": { |
| | | target: 'http://192.168.20.10:7003', |
| | | target: serverUrl, |
| | | changeOrigin: true, //开启代理 |
| | | }, |
| | | "/files": { |
| | | target: 'http://192.168.20.10:7003', |
| | | target: serverUrl, |
| | | changeOrigin: true, //开启代理 |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | }; |