Skip to content

Commit a75f8ab

Browse files
committed
Upgrade code by DeepSeek V3
1 parent c6e809d commit a75f8ab

15 files changed

+15592
-228
lines changed

.babelrc

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"presets": ["es2015", "stage-2"],
3-
"plugins": ["transform-runtime"],
2+
"presets": ["@babel/preset-env"],
3+
"plugins": ["@babel/plugin-transform-runtime"],
44
"comments": false
55
}

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ test/e2e/reports
88
.idea
99
*.iml
1010
.vscode
11+
.aider*

build/build.js

+48-30
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,53 @@
1-
// https://github.com/shelljs/shelljs
2-
require('shelljs/global')
3-
env.NODE_ENV = 'production'
4-
5-
var path = require('path')
6-
var config = require('../config')
7-
var ora = require('ora')
8-
var webpack = require('webpack')
9-
var webpackConfig = require('./webpack.prod.conf')
10-
11-
console.log(
12-
' Tip:\n' +
13-
' Built files are meant to be served over an HTTP server.\n' +
14-
' Opening index.html over file:// won\'t work.\n'
15-
)
16-
17-
var spinner = ora('building for production...')
1+
const path = require('path')
2+
const { execSync } = require('child_process')
3+
const ora = require('ora')
4+
const webpack = require('webpack')
5+
const webpackConfig = require('./webpack.prod.conf')
6+
7+
const spinner = ora('Building for production...')
188
spinner.start()
199

20-
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
21-
rm('-rf', assetsPath)
22-
mkdir('-p', assetsPath)
23-
cp('-R', 'static/', assetsPath)
10+
// Clean dist directory
11+
execSync('rm -rf dist')
12+
execSync('mkdir -p dist')
13+
14+
// Copy static assets
15+
execSync('cp -R static/* dist/')
2416

25-
webpack(webpackConfig, function (err, stats) {
17+
const compiler = webpack(webpackConfig)
18+
19+
compiler.run((err, stats) => {
2620
spinner.stop()
27-
if (err) throw err
28-
process.stdout.write(stats.toString({
29-
colors: true,
30-
modules: false,
31-
children: false,
32-
chunks: false,
33-
chunkModules: false
34-
}) + '\n')
21+
22+
if (err) {
23+
console.error(err.stack || err)
24+
if (err.details) {
25+
console.error(err.details)
26+
}
27+
process.exit(1)
28+
}
29+
30+
const info = stats.toJson()
31+
32+
if (stats.hasErrors()) {
33+
console.error(info.errors)
34+
process.exit(1)
35+
}
36+
37+
if (stats.hasWarnings()) {
38+
console.warn(info.warnings)
39+
}
40+
41+
console.log(
42+
stats.toString({
43+
colors: true,
44+
modules: false,
45+
children: false,
46+
chunks: false,
47+
chunkModules: false
48+
})
49+
)
50+
51+
console.log('\nBuild complete!')
52+
console.log('Files output to:', path.resolve(__dirname, '../dist'))
3553
})

build/dev-server.js

+33-60
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,38 @@
1-
var path = require('path')
2-
var express = require('express')
3-
var webpack = require('webpack')
4-
var config = require('../config')
5-
var proxyMiddleware = require('http-proxy-middleware')
6-
var webpackConfig = process.env.NODE_ENV === 'testing'
7-
? require('./webpack.prod.conf')
8-
: require('./webpack.dev.conf')
9-
10-
// default port where dev server listens for incoming traffic
11-
var port = process.env.PORT || config.dev.port
12-
// Define HTTP proxies to your custom API backend
13-
// https://github.com/chimurai/http-proxy-middleware
14-
var proxyTable = config.dev.proxyTable
15-
16-
var app = express()
17-
var compiler = webpack(webpackConfig)
18-
19-
var devMiddleware = require('webpack-dev-middleware')(compiler, {
20-
publicPath: webpackConfig.output.publicPath,
21-
stats: {
22-
colors: true,
23-
chunks: false
24-
}
25-
})
26-
27-
var hotMiddleware = require('webpack-hot-middleware')(compiler)
28-
// force page reload when html-webpack-plugin template changes
29-
compiler.plugin('compilation', function (compilation) {
30-
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
31-
hotMiddleware.publish({ action: 'reload' })
32-
cb()
33-
})
34-
})
35-
36-
// proxy api requests
37-
Object.keys(proxyTable).forEach(function (context) {
38-
var options = proxyTable[context]
39-
if (typeof options === 'string') {
40-
options = { target: options }
1+
const path = require('path')
2+
const webpack = require('webpack')
3+
const WebpackDevServer = require('webpack-dev-server')
4+
const webpackConfig = require('./webpack.dev.conf')
5+
6+
const compiler = webpack(webpackConfig)
7+
const port = process.env.PORT || 8080
8+
9+
const devServerOptions = {
10+
...webpackConfig.devServer,
11+
open: true,
12+
historyApiFallback: true,
13+
client: {
14+
overlay: {
15+
errors: true,
16+
warnings: false
17+
},
18+
progress: true
19+
},
20+
static: {
21+
directory: path.join(__dirname, '../static')
4122
}
42-
app.use(proxyMiddleware(context, options))
43-
})
44-
45-
// handle fallback for HTML5 history API
46-
app.use(require('connect-history-api-fallback')())
23+
}
4724

48-
// serve webpack bundle output
49-
app.use(devMiddleware)
25+
const server = new WebpackDevServer(devServerOptions, compiler)
5026

51-
// enable hot-reload and state-preserving
52-
// compilation error display
53-
app.use(hotMiddleware)
54-
55-
// serve pure static assets
56-
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
57-
app.use(staticPath, express.static('./static'))
27+
const runServer = async () => {
28+
console.log('Starting dev server...')
29+
await server.startCallback(() => {
30+
console.log(`Dev server is running at http://localhost:${port}`)
31+
console.log('Waiting for initial build...')
32+
})
33+
}
5834

59-
module.exports = app.listen(port, function (err) {
60-
if (err) {
61-
console.log(err)
62-
return
63-
}
64-
console.log('Listening at http://localhost:' + port + '\n')
35+
runServer().catch(err => {
36+
console.error('Failed to start dev server:', err)
37+
process.exit(1)
6538
})

build/utils.js

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var path = require('path')
22
var config = require('../config')
3-
var ExtractTextPlugin = require('extract-text-webpack-plugin')
3+
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
44

55
exports.assetsPath = function (_path) {
66
return path.posix.join(config.build.assetsSubDirectory, _path)
@@ -11,21 +11,25 @@ exports.cssLoaders = function (options) {
1111
// generate loader string to be used with extract text plugin
1212
function generateLoaders (loaders) {
1313
var sourceLoader = loaders.map(function (loader) {
14-
var extraParamChar
14+
var loaderObj = {}
1515
if (/\?/.test(loader)) {
16-
loader = loader.replace(/\?/, '-loader?')
17-
extraParamChar = '&'
16+
loaderObj.loader = loader.replace(/\?/, '-loader?')
17+
if (options.sourceMap) {
18+
loaderObj.options = { sourceMap: true }
19+
}
1820
} else {
19-
loader = loader + '-loader'
20-
extraParamChar = '?'
21+
loaderObj.loader = loader + '-loader'
22+
if (options.sourceMap) {
23+
loaderObj.options = { sourceMap: true }
24+
}
2125
}
22-
return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '')
23-
}).join('!')
26+
return loaderObj
27+
})
2428

2529
if (options.extract) {
26-
return ExtractTextPlugin.extract('vue-style-loader', sourceLoader)
30+
return [MiniCssExtractPlugin.loader].concat(sourceLoader)
2731
} else {
28-
return ['vue-style-loader', sourceLoader].join('!')
32+
return ['vue-style-loader'].concat(sourceLoader)
2933
}
3034
}
3135

build/webpack.base.conf.js

+50-47
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
var path = require('path')
2-
var config = require('../config')
3-
var utils = require('./utils')
1+
const path = require('path')
2+
const config = require('../config')
3+
const utils = require('./utils')
4+
const { VueLoaderPlugin } = require('vue-loader')
45
var projectRoot = path.resolve(__dirname, '../')
56

67
module.exports = {
8+
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
79
entry: {
810
app: './src/main.js'
911
},
@@ -13,8 +15,7 @@ module.exports = {
1315
filename: '[name].js'
1416
},
1517
resolve: {
16-
extensions: ['', '.js', '.vue'],
17-
fallback: [path.join(__dirname, '../node_modules')],
18+
extensions: ['.js', '.vue'],
1819
alias: {
1920
vue: 'vue/dist/vue.js',
2021
'src': path.resolve(__dirname, '../src'),
@@ -28,72 +29,74 @@ module.exports = {
2829
}
2930
},
3031
resolveLoader: {
31-
fallback: [path.join(__dirname, '../node_modules')]
32+
modules: [path.join(__dirname, '../node_modules')]
3233
},
34+
plugins: [
35+
new VueLoaderPlugin()
36+
],
3337
module: {
34-
noParse: /.npminstall\/localforage\/1.4.3\/localforage\/dist\/localforage.js/,
35-
preLoaders: [
38+
rules: [
3639
{
3740
test: /\.vue$/,
38-
loader: 'eslint',
39-
include: projectRoot,
40-
exclude: /node_modules/
41-
},
42-
{
43-
test: /\.js$/,
44-
loader: 'eslint',
45-
include: projectRoot,
46-
exclude: /node_modules/
47-
}
48-
],
49-
loaders: [
50-
// {
51-
// test: require.resolve('jsplumb'),
52-
// loaders: [
53-
// 'imports?this=>window',
54-
// 'script'
55-
// ]
56-
// },
57-
{
58-
test: /\.vue$/,
59-
loader: 'vue'
41+
loader: 'vue-loader',
42+
options: {
43+
compilerOptions: {
44+
preserveWhitespace: false
45+
}
46+
}
6047
},
6148
{
6249
test: /\.js$/,
63-
loader: 'babel',
50+
loader: 'babel-loader',
6451
include: projectRoot,
6552
exclude: /node_modules/
6653
},
6754
{
6855
test: /\.json$/,
69-
loader: 'json'
56+
type: 'json'
7057
},
7158
{
7259
test: /\.html$/,
73-
loader: 'vue-html'
60+
loader: 'html-loader'
7461
},
7562
{
7663
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
77-
loader: 'url',
78-
query: {
79-
limit: 10000,
80-
name: utils.assetsPath('img/[name].[hash:7].[ext]')
64+
type: 'asset/resource',
65+
generator: {
66+
filename: utils.assetsPath('img/[name].[hash:7].[ext]')
8167
}
8268
},
8369
{
8470
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
85-
loader: 'url',
86-
query: {
87-
limit: 10000,
88-
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
71+
type: 'asset/resource',
72+
generator: {
73+
filename: utils.assetsPath('fonts/[name].[hash:7].[ext]')
8974
}
75+
},
76+
{
77+
test: /\.css$/,
78+
use: [
79+
process.env.NODE_ENV !== 'production'
80+
? 'vue-style-loader'
81+
: MiniCssExtractPlugin.loader,
82+
'css-loader'
83+
]
84+
},
85+
{
86+
test: /\.scss$/,
87+
use: [
88+
process.env.NODE_ENV !== 'production'
89+
? 'vue-style-loader'
90+
: MiniCssExtractPlugin.loader,
91+
'css-loader',
92+
{
93+
loader: 'sass-loader',
94+
options: {
95+
implementation: require('sass')
96+
}
97+
}
98+
]
9099
}
91100
]
92-
},
93-
eslint: {
94-
formatter: require('eslint-friendly-formatter')
95-
},
96-
vue: {
97-
loaders: utils.cssLoaders()
98101
}
99102
}

0 commit comments

Comments
 (0)