123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- 'use strict'
- const path = require('path')
- const ip = '192.168.1.43'
- const os = require('os')
- const fs = require("fs")
- //判断环境
- let ifaces = os.networkInterfaces()
- let localityIp = '', result = []
- for (let dev in ifaces) {
- ifaces[dev].forEach(function (details) {
- if (localityIp === '' && details.family === 'IPv4' && !details.internal) {
- localityIp = details.address
- return;
- }
- })
- }
- let getFile = localityIp == ip ? false : true
- /******** 获取git版本信息 ********/
- const gitHEAD = getFile ? fs.readFileSync('.git/HEAD', 'utf-8').trim() : false
- const ref = getFile ? gitHEAD.split(': ')[1] : false
- const develop = getFile ? gitHEAD.split('/')[2] : false
- const gitVersion = getFile ? fs.readFileSync('.git/' + ref, 'utf-8').trim() : false
- const buildEdition = develop && gitVersion ? develop + ': ' + gitVersion : '未配置'
- const myDate = new Date()
- const buildTime = myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate() + ' ' + myDate.getHours() + ':' + myDate.getMinutes();
- const logsList = getFile ? fs.readFileSync('.git/logs/HEAD', 'utf-8').replace(/\r\n|\r/g, "\n").split("\n") : false
- const buildUser = getFile ? logsList[logsList.length - 2].split(" ")[2] : '未配置'
- //生成随机版本编码
- const revision = generateRandomString()
- process.env.VUE_APP_RENEWAL_ENCODING = revision
- require('fs').writeFileSync('public/version.txt', revision)
- function generateRandomString() {
- let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- let randomString = "";
- for (let i = 0; i < 24; i++) {
- let randomIndex = Math.floor(Math.random() * chars.length);
- randomString += chars.charAt(randomIndex);
- }
- return randomString;
- }
- const name = '实验室安全智慧化管控系统' // 网页标题
- const {defineConfig} = require('@vue/cli-service')
- const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')
- const webpack = require('webpack');
- module.exports = defineConfig({
- transpileDependencies: true,
- lintOnSave: false,
- publicPath: "./", // 公共路径(必须有的)
- outputDir: "bigData", // 输出文件目录
- assetsDir: "static", //静态资源文件名称
- productionSourceMap: false, //去除打包后js的map文件
- devServer: {
- host: "localhost", // 默认是localhost
- port: 8081, // 前端项目编译后使用的端口号,跟webpack配置的port同理
- open: true,
- proxy: {
- '/api': {
- target: `http://localhost:8081`, // 实际跨域请求的API地址
- changeOrigin: true, // 跨域
- // 请求地址重写 http://front-end/api/login ⇒ http://api-url/login
- pathRewrite: {
- ['^' + process.env.VUE_APP_BASE_API]: ''
- }
- }
- },
- },
- configureWebpack: {
- resolve: {
- fallback: {
- },
- },
- plugins: [
- new NodePolyfillPlugin(),
- new webpack.ProvidePlugin({
- process: 'process/browser',
- }),
- ]
- },
- chainWebpack(config) {
- //标记打包时间与当前git版本信息
- config.plugin('html').tap(args => {
- args[0].buildUser = buildUser;
- args[0].buildTime = buildTime;
- args[0].buildEdition = buildEdition;
- return args
- })
- config
- .when(process.env.VUE_APP_ENV !== 'www.dlc.com',
- config => {
- config
- .plugin('ScriptExtHtmlWebpackPlugin')
- .after('html')
- .use('script-ext-html-webpack-plugin', [{
- // `runtime` must same as runtimeChunk name. default is `runtime`
- inline: /runtime\..*\.js$/
- }])
- .end()
- config
- .optimization.splitChunks({
- chunks: 'all',
- minSize: 50000, //构建出来的chunk大于30000才会被分割
- maxSize: 100000, //会尝试根据这个大小进行代码分割
- })
- }
- )
- },
- })
|