umbrella22

升级webpack5

...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
6 [ 6 [
7 "@babel/preset-env", 7 "@babel/preset-env",
8 { 8 {
9 + "useBuiltIns": "usage",
10 + "corejs": 3,
9 "targets": { 11 "targets": {
10 "node": 7 12 "node": 7
11 } 13 }
...@@ -46,7 +48,9 @@ ...@@ -46,7 +48,9 @@
46 [ 48 [
47 "@babel/preset-env", 49 "@babel/preset-env",
48 { 50 {
49 - "modules": false 51 + "modules": false,
52 + "useBuiltIns": "usage",
53 + "corejs": 3
50 } 54 }
51 ] 55 ]
52 ], 56 ],
...@@ -84,7 +88,9 @@ ...@@ -84,7 +88,9 @@
84 [ 88 [
85 "@babel/preset-env", 89 "@babel/preset-env",
86 { 90 {
87 - "modules": false 91 + "modules": false,
92 + "useBuiltIns": "usage",
93 + "corejs": 3
88 } 94 }
89 ] 95 ]
90 ], 96 ],
......
1 'use strict' 1 'use strict'
2 -
3 process.env.NODE_ENV = 'production' 2 process.env.NODE_ENV = 'production'
4 -
5 const { say } = require('cfonts') 3 const { say } = require('cfonts')
6 const chalk = require('chalk') 4 const chalk = require('chalk')
7 const del = require('del') 5 const del = require('del')
...@@ -21,16 +19,16 @@ if (process.env.BUILD_TARGET === 'clean') clean() ...@@ -21,16 +19,16 @@ if (process.env.BUILD_TARGET === 'clean') clean()
21 else if (process.env.BUILD_TARGET === 'web') web() 19 else if (process.env.BUILD_TARGET === 'web') web()
22 else build() 20 else build()
23 21
24 -function clean () { 22 +function clean() {
25 - del.sync(['dist/electron/*','build/*', '!build/icons','!build/lib','!build/lib/electron-build.*', '!build/icons/icon.*']) 23 + del.sync(['dist/electron/*', 'build/*', '!build/icons', '!build/lib', '!build/lib/electron-build.*', '!build/icons/icon.*'])
26 console.log(`\n${doneLog}clear done`) 24 console.log(`\n${doneLog}clear done`)
27 process.exit() 25 process.exit()
28 } 26 }
29 27
30 -function build () { 28 +function build() {
31 greeting() 29 greeting()
32 30
33 - del.sync(['dist/electron/*', '!.gitkeep']) 31 + del.sync(['dist/electron/*', 'build/*', '!build/icons', '!build/lib', '!build/lib/electron-build.*', '!build/icons/icon.*'])
34 32
35 const tasks = ['main', 'renderer'] 33 const tasks = ['main', 'renderer']
36 const m = new Multispinner(tasks, { 34 const m = new Multispinner(tasks, {
...@@ -68,7 +66,7 @@ function build () { ...@@ -68,7 +66,7 @@ function build () {
68 }) 66 })
69 } 67 }
70 68
71 -function pack (config) { 69 +function pack(config) {
72 return new Promise((resolve, reject) => { 70 return new Promise((resolve, reject) => {
73 config.mode = 'production' 71 config.mode = 'production'
74 webpack(config, (err, stats) => { 72 webpack(config, (err, stats) => {
...@@ -96,7 +94,7 @@ function pack (config) { ...@@ -96,7 +94,7 @@ function pack (config) {
96 }) 94 })
97 } 95 }
98 96
99 -function web () { 97 +function web() {
100 del.sync(['dist/web/*', '!.gitkeep']) 98 del.sync(['dist/web/*', '!.gitkeep'])
101 rendererConfig.mode = 'production' 99 rendererConfig.mode = 'production'
102 webpack(rendererConfig, (err, stats) => { 100 webpack(rendererConfig, (err, stats) => {
...@@ -111,7 +109,7 @@ function web () { ...@@ -111,7 +109,7 @@ function web () {
111 }) 109 })
112 } 110 }
113 111
114 -function greeting () { 112 +function greeting() {
115 const cols = process.stdout.columns 113 const cols = process.stdout.columns
116 let text = '' 114 let text = ''
117 115
......
...@@ -71,6 +71,7 @@ function startRenderer() { ...@@ -71,6 +71,7 @@ function startRenderer() {
71 if (err) { 71 if (err) {
72 reject("PortError:" + err) 72 reject("PortError:" + err)
73 } else { 73 } else {
74 + WebpackDevServer.addDevServerEntrypoints(rendererConfig, {});
74 const compiler = webpack(rendererConfig) 75 const compiler = webpack(rendererConfig)
75 hotMiddleware = webpackHotMiddleware(compiler, { 76 hotMiddleware = webpackHotMiddleware(compiler, {
76 log: false, 77 log: false,
...@@ -91,6 +92,10 @@ function startRenderer() { ...@@ -91,6 +92,10 @@ function startRenderer() {
91 compiler, { 92 compiler, {
92 contentBase: path.join(__dirname, '../'), 93 contentBase: path.join(__dirname, '../'),
93 quiet: true, 94 quiet: true,
95 + stats: {
96 + colors: true,
97 +
98 + },
94 before(app, ctx) { 99 before(app, ctx) {
95 app.use(hotMiddleware) 100 app.use(hotMiddleware)
96 ctx.middleware.waitUntilValid(() => { 101 ctx.middleware.waitUntilValid(() => {
......
1 +'use strict'
2 +const MiniCssPlugin = require('mini-css-extract-plugin');
3 +
4 +exports.cssLoaders = function (options) {
5 + options = options || {}
6 +
7 + const cssLoader = {
8 + loader: 'css-loader',
9 + options: {
10 + sourceMap: options.sourceMap,
11 + esModule: false
12 + }
13 + }
14 +
15 + // 这里就是生成loader和其对应的配置
16 + function generateLoaders(loader, loaderOptions) {
17 + const loaders = [cssLoader]
18 +
19 + if (loader) {
20 + loaders.push({
21 + loader: loader + '-loader',
22 + options: Object.assign({}, loaderOptions, {
23 + sourceMap: options.sourceMap
24 + })
25 + })
26 + }
27 +
28 + // 当配置信息中开启此项时,启用css分离压缩
29 + // 这一项在生产环境时,是默认开启的
30 + if (options.extract) {
31 + return [MiniCssPlugin.loader].concat(loaders)
32 + } else {
33 + // 如果不开启则让vue-style-loader来处理
34 + return ['vue-style-loader'].concat(loaders)
35 + }
36 + }
37 +
38 + // https://vue-loader.vuejs.org/en/configurations/extract-css.html
39 + return {
40 + css: generateLoaders(),
41 + postcss: generateLoaders(),
42 + less: generateLoaders('less'),
43 + sass: generateLoaders('sass', { indentedSyntax: true }),
44 + scss: generateLoaders('sass'),
45 + stylus: generateLoaders('stylus'),
46 + styl: generateLoaders('stylus')
47 + }
48 +}
49 +
50 +// 根据上面的函数遍历出来的各个css预处理器的loader进行最后的拼装
51 +exports.styleLoaders = function (options) {
52 + const output = []
53 + const loaders = exports.cssLoaders(options)
54 +
55 +
56 + for (const extension in loaders) {
57 + const loader = loaders[extension]
58 + output.push({
59 + test: new RegExp('\\.' + extension + '$'),
60 + use: loader
61 + })
62 + }
63 +
64 + return output
65 +}
...@@ -20,22 +20,6 @@ let mainConfig = { ...@@ -20,22 +20,6 @@ let mainConfig = {
20 ], 20 ],
21 module: { 21 module: {
22 rules: [ 22 rules: [
23 - // {
24 - // test: /\.(js)$/,
25 - // enforce: 'pre',
26 - // exclude: /node_modules/,
27 - // use: {
28 - // loader: 'eslint-loader',
29 - // options: {
30 - // formatter: require('eslint-friendly-formatter')
31 - // }
32 - // }
33 - // },
34 - // {
35 - // test: /\.js$/,
36 - // use: 'happypack/loader?id=MainHappyBabel',
37 - // exclude: /node_modules/
38 - // },
39 { 23 {
40 test: /\.ts$/, 24 test: /\.ts$/,
41 use: [{ 25 use: [{
......
...@@ -6,13 +6,16 @@ const path = require('path') ...@@ -6,13 +6,16 @@ const path = require('path')
6 const { dependencies } = require('../package.json') 6 const { dependencies } = require('../package.json')
7 const webpack = require('webpack') 7 const webpack = require('webpack')
8 const config = require('../config') 8 const config = require('../config')
9 +const { styleLoaders } = require('./utils')
9 const IsWeb = process.env.ENV_TARGET === 'web' 10 const IsWeb = process.env.ENV_TARGET === 'web'
10 11
11 const CopyWebpackPlugin = require('copy-webpack-plugin') 12 const CopyWebpackPlugin = require('copy-webpack-plugin')
12 const MiniCssExtractPlugin = require('mini-css-extract-plugin') 13 const MiniCssExtractPlugin = require('mini-css-extract-plugin')
13 const HtmlWebpackPlugin = require('html-webpack-plugin') 14 const HtmlWebpackPlugin = require('html-webpack-plugin')
14 const TerserPlugin = require('terser-webpack-plugin'); 15 const TerserPlugin = require('terser-webpack-plugin');
16 +// const ESLintPlugin = require('eslint-webpack-plugin');
15 const { VueLoaderPlugin } = require('vue-loader') 17 const { VueLoaderPlugin } = require('vue-loader')
18 +
16 function resolve(dir) { 19 function resolve(dir) {
17 return path.join(__dirname, '..', dir) 20 return path.join(__dirname, '..', dir)
18 } 21 }
...@@ -26,7 +29,7 @@ function resolve(dir) { ...@@ -26,7 +29,7 @@ function resolve(dir) {
26 let whiteListedModules = IsWeb ? [] : ['vue', "element-ui"] 29 let whiteListedModules = IsWeb ? [] : ['vue', "element-ui"]
27 30
28 let rendererConfig = { 31 let rendererConfig = {
29 - devtool: '#cheap-module-eval-source-map', 32 + devtool: 'eval-source-map',
30 entry: { 33 entry: {
31 renderer: resolve('src/renderer/main.js') 34 renderer: resolve('src/renderer/main.js')
32 }, 35 },
...@@ -35,57 +38,9 @@ let rendererConfig = { ...@@ -35,57 +38,9 @@ let rendererConfig = {
35 ], 38 ],
36 module: { 39 module: {
37 rules: [ 40 rules: [
38 - // {
39 - // test: /\.(js|vue)$/,
40 - // enforce: 'pre',
41 - // exclude: /node_modules/,
42 - // use: {
43 - // loader: 'eslint-loader',
44 - // options: {
45 - // formatter: require('eslint-friendly-formatter')
46 - // }
47 - // }
48 - // },
49 - {
50 - test: /\.scss$/,
51 - use: ['vue-style-loader',
52 - {
53 - loader: 'css-loader',
54 - options: {
55 - esModule: false
56 - }
57 - },
58 - 'sass-loader']
59 - },
60 - {
61 - test: /\.sass$/,
62 - use: ['vue-style-loader',
63 - {
64 - loader: 'css-loader',
65 - options: {
66 - esModule: false
67 - }
68 - }, 'sass-loader?indentedSyntax']
69 - },
70 - {
71 - test: /\.less$/,
72 - use: ['vue-style-loader',
73 - {
74 - loader: 'css-loader',
75 - options: {
76 - esModule: false
77 - }
78 - }, 'less-loader']
79 - },
80 - {
81 - test: /\.css$/,
82 - use: ['vue-style-loader',
83 { 41 {
84 - loader: 'css-loader', 42 + test: /\.vue$/,
85 - options: { 43 + loader: "vue-loader"
86 - esModule: false
87 - }
88 - }]
89 }, 44 },
90 { 45 {
91 test: /\.html$/, 46 test: /\.html$/,
...@@ -102,20 +57,6 @@ let rendererConfig = { ...@@ -102,20 +57,6 @@ let rendererConfig = {
102 exclude: /node_modules/ 57 exclude: /node_modules/
103 }, 58 },
104 { 59 {
105 - test: /\.node$/,
106 - use: 'node-loader'
107 - },
108 - {
109 - test: /\.vue$/,
110 - use: {
111 - loader: 'vue-loader',
112 - options: {
113 - cacheDirectory: 'node_modules/.cache/vue-loader',
114 - cacheIdentifier: '7270960a',
115 - }
116 - }
117 - },
118 - {
119 test: /\.svg$/, 60 test: /\.svg$/,
120 loader: 'svg-sprite-loader', 61 loader: 'svg-sprite-loader',
121 include: [resolve('src/renderer/icons')], 62 include: [resolve('src/renderer/icons')],
...@@ -124,35 +65,24 @@ let rendererConfig = { ...@@ -124,35 +65,24 @@ let rendererConfig = {
124 } 65 }
125 }, 66 },
126 { 67 {
127 - test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 68 + test: /\.(png|jpe?g|gif)(\?.*)?$/,
128 - exclude: [resolve('src/renderer/icons')], 69 + type: "asset/resource",
129 - use: { 70 + generator: {
130 - loader: 'url-loader', 71 + filename: 'imgs/[name]--[hash].[ext]'
131 - query: {
132 - esModule: false,
133 - limit: 10000,
134 - name: 'imgs/[name]--[folder].[ext]'
135 } 72 }
136 }, 73 },
137 - },
138 { 74 {
139 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 75 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
140 - loader: 'url-loader', 76 + type: "asset/resource",
141 - options: { 77 + generator: {
142 - esModule: false, 78 + filename: 'media/[name]--[hash].[ext]'
143 - limit: 10000,
144 - name: 'media/[name]--[folder].[ext]'
145 } 79 }
146 }, 80 },
147 { 81 {
148 test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 82 test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
149 - use: { 83 + type: "asset/resource",
150 - loader: 'url-loader', 84 + generator: {
151 - query: { 85 + filename: 'fonts/[name]--[hash].[ext]'
152 - esModule: false,
153 - limit: 10000,
154 - name: 'fonts/[name]--[folder].[ext]'
155 - }
156 } 86 }
157 } 87 }
158 ] 88 ]
...@@ -209,6 +139,8 @@ let rendererConfig = { ...@@ -209,6 +139,8 @@ let rendererConfig = {
209 }, 139 },
210 target: 'electron-renderer' 140 target: 'electron-renderer'
211 } 141 }
142 +// 将css相关得loader抽取出来
143 +rendererConfig.module.rules = rendererConfig.module.rules.concat(styleLoaders({ sourceMap: config.dev.cssSourceMap }))
212 144
213 /** 145 /**
214 * Adjust rendererConfig for development settings 146 * Adjust rendererConfig for development settings
...@@ -226,8 +158,6 @@ if (process.env.NODE_ENV !== 'production' && !IsWeb) { ...@@ -226,8 +158,6 @@ if (process.env.NODE_ENV !== 'production' && !IsWeb) {
226 * Adjust rendererConfig for production settings 158 * Adjust rendererConfig for production settings
227 */ 159 */
228 if (process.env.NODE_ENV === 'production') { 160 if (process.env.NODE_ENV === 'production') {
229 - rendererConfig.devtool = ''
230 -
231 rendererConfig.plugins.push( 161 rendererConfig.plugins.push(
232 new CopyWebpackPlugin({ 162 new CopyWebpackPlugin({
233 patterns: [ 163 patterns: [
...@@ -252,8 +182,6 @@ if (process.env.NODE_ENV === 'production') { ...@@ -252,8 +182,6 @@ if (process.env.NODE_ENV === 'production') {
252 new TerserPlugin({ 182 new TerserPlugin({
253 test: /\.js(\?.*)?$/i, 183 test: /\.js(\?.*)?$/i,
254 extractComments: false, 184 extractComments: false,
255 - cache: true,
256 - sourceMap: false,
257 terserOptions: { 185 terserOptions: {
258 warnings: false, 186 warnings: false,
259 compress: { 187 compress: {
...@@ -270,7 +198,7 @@ if (process.env.NODE_ENV === 'production') { ...@@ -270,7 +198,7 @@ if (process.env.NODE_ENV === 'production') {
270 drop_debugger: true, 198 drop_debugger: true,
271 pure_funcs: ['console.log'] 199 pure_funcs: ['console.log']
272 }, 200 },
273 - } 201 + },
274 })] 202 })]
275 } 203 }
276 if (IsWeb) { 204 if (IsWeb) {
...@@ -298,6 +226,9 @@ if (process.env.NODE_ENV === 'production') { ...@@ -298,6 +226,9 @@ if (process.env.NODE_ENV === 'production') {
298 } 226 }
299 rendererConfig.optimization.runtimeChunk = { name: 'runtime' } 227 rendererConfig.optimization.runtimeChunk = { name: 'runtime' }
300 } 228 }
229 +} else {
230 + // eslint
231 + // rendererConfig.plugins.push(new ESLintPlugin(config.dev.ESLintoptions))
301 } 232 }
302 233
303 module.exports = rendererConfig 234 module.exports = rendererConfig
......
...@@ -14,5 +14,5 @@ yarn-error.log* ...@@ -14,5 +14,5 @@ yarn-error.log*
14 *.ntvs* 14 *.ntvs*
15 *.njsproj 15 *.njsproj
16 *.sln 16 *.sln
17 -electron-vue-template-ts.7z
18 server/client/electron-vue-admin Setup 0.0.1.exe 17 server/client/electron-vue-admin Setup 0.0.1.exe
18 +/build/builder-effective-config.yaml
......
...@@ -7,7 +7,11 @@ module.exports = { ...@@ -7,7 +7,11 @@ module.exports = {
7 env: require('./dev.env'), 7 env: require('./dev.env'),
8 removeElectronJunk: true, 8 removeElectronJunk: true,
9 chineseLog: false, 9 chineseLog: false,
10 - port: 9080 10 + port: 9080,
11 + ESLintoptions:{
12 + formatter: require('eslint-friendly-formatter')
13 + },
14 + cssSourceMap: true
11 }, 15 },
12 UseStartupChart: true, 16 UseStartupChart: true,
13 IsUseSysTitle: true, 17 IsUseSysTitle: true,
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
6 "license": "MIT", 6 "license": "MIT",
7 "main": "./dist/electron/main.js", 7 "main": "./dist/electron/main.js",
8 "scripts": { 8 "scripts": {
9 - "dev": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/dev-runner.js", 9 + "dev": "node .electron-vue/dev-runner.js",
10 "build": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder", 10 "build": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder",
11 "build:win32": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --ia32", 11 "build:win32": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --ia32",
12 "build:win64": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --x64", 12 "build:win64": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder --win --x64",
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
19 "pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js", 19 "pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js",
20 "update:serve": "node server/index.js", 20 "update:serve": "node server/index.js",
21 "dep:upgrade": "yarn upgrade-interactive --latest", 21 "dep:upgrade": "yarn upgrade-interactive --latest",
22 - "postinstall": "install-app-deps" 22 + "postinstall": "electron-builder install-app-deps"
23 }, 23 },
24 "build": { 24 "build": {
25 "extraFiles": [], 25 "extraFiles": [],
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
66 }, 66 },
67 "dependencies": { 67 "dependencies": {
68 "axios": "^0.21.1", 68 "axios": "^0.21.1",
69 - "date-fns": "^2.16.1", 69 + "date-fns": "^2.17.0",
70 "electron-updater": "^4.3.5", 70 "electron-updater": "^4.3.5",
71 "element-ui": "^2.15.0", 71 "element-ui": "^2.15.0",
72 "express": "^4.17.1", 72 "express": "^4.17.1",
...@@ -74,79 +74,75 @@ ...@@ -74,79 +74,75 @@
74 "js-cookie": "^2.2.1", 74 "js-cookie": "^2.2.1",
75 "nprogress": "^0.2.0", 75 "nprogress": "^0.2.0",
76 "vue": "^2.6.12", 76 "vue": "^2.6.12",
77 - "vue-router": "^3.4.9", 77 + "vue-router": "^3.5.1",
78 - "vuex": "^3.6.0" 78 + "vuex": "^3.6.2"
79 }, 79 },
80 "devDependencies": { 80 "devDependencies": {
81 - "@babel/core": "^7.12.10", 81 + "@babel/core": "^7.12.13",
82 - "@babel/plugin-proposal-class-properties": "^7.12.1", 82 + "@babel/eslint-parser": "^7.12.13",
83 - "@babel/plugin-proposal-decorators": "^7.12.12", 83 + "@babel/plugin-proposal-class-properties": "^7.12.13",
84 - "@babel/plugin-proposal-do-expressions": "^7.12.1", 84 + "@babel/plugin-proposal-decorators": "^7.12.13",
85 - "@babel/plugin-proposal-export-default-from": "^7.12.1", 85 + "@babel/plugin-proposal-do-expressions": "^7.12.13",
86 - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", 86 + "@babel/plugin-proposal-export-default-from": "^7.12.13",
87 - "@babel/plugin-proposal-function-bind": "^7.12.1", 87 + "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
88 - "@babel/plugin-proposal-function-sent": "^7.12.1", 88 + "@babel/plugin-proposal-function-bind": "^7.12.13",
89 - "@babel/plugin-proposal-json-strings": "^7.12.1", 89 + "@babel/plugin-proposal-function-sent": "^7.12.13",
90 - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", 90 + "@babel/plugin-proposal-json-strings": "^7.12.13",
91 - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", 91 + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13",
92 - "@babel/plugin-proposal-numeric-separator": "^7.12.7", 92 + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13",
93 - "@babel/plugin-proposal-optional-chaining": "^7.12.7", 93 + "@babel/plugin-proposal-numeric-separator": "^7.12.13",
94 - "@babel/plugin-proposal-pipeline-operator": "^7.12.1", 94 + "@babel/plugin-proposal-optional-chaining": "^7.12.13",
95 - "@babel/plugin-proposal-throw-expressions": "^7.12.1", 95 + "@babel/plugin-proposal-pipeline-operator": "^7.12.13",
96 + "@babel/plugin-proposal-throw-expressions": "^7.12.13",
96 "@babel/plugin-syntax-dynamic-import": "^7.8.3", 97 "@babel/plugin-syntax-dynamic-import": "^7.8.3",
97 "@babel/plugin-syntax-import-meta": "^7.10.4", 98 "@babel/plugin-syntax-import-meta": "^7.10.4",
98 - "@babel/plugin-transform-runtime": "^7.12.10", 99 + "@babel/plugin-transform-runtime": "^7.12.15",
99 "@babel/polyfill": "^7.12.1", 100 "@babel/polyfill": "^7.12.1",
100 - "@babel/preset-env": "^7.12.11", 101 + "@babel/preset-env": "^7.12.13",
101 - "@babel/register": "^7.12.10", 102 + "@babel/register": "^7.12.13",
102 - "@babel/runtime": "^7.12.5", 103 + "@babel/runtime": "^7.12.13",
103 "@types/fs-extra": "^9.0.6", 104 "@types/fs-extra": "^9.0.6",
104 - "@types/node": "^14.14.22", 105 + "@types/node": "^14.14.25",
105 - "ajv": "^6.12.6", 106 + "ajv": "^7.0.4",
106 - "babel-eslint": "^9.0.0",
107 "babel-loader": "^8.2.2", 107 "babel-loader": "^8.2.2",
108 - "cache-loader": "^4.1.0",
109 "cfonts": "^2.9.1", 108 "cfonts": "^2.9.1",
110 "chalk": "^4.0.0", 109 "chalk": "^4.0.0",
111 - "copy-webpack-plugin": "^6.3.2", 110 + "copy-webpack-plugin": "^7.0.0",
111 + "core-js": "^3.8.3",
112 "cross-env": "^7.0.3", 112 "cross-env": "^7.0.3",
113 "css-loader": "^5.0.1", 113 "css-loader": "^5.0.1",
114 "del": "^6.0.0", 114 "del": "^6.0.0",
115 - "electron": "^11.2.1", 115 + "electron": "^11.2.3",
116 "electron-builder": "^22.9.1", 116 "electron-builder": "^22.9.1",
117 "electron-devtools-installer": "^3.1.1", 117 "electron-devtools-installer": "^3.1.1",
118 - "eslint": "^6.8.0", 118 + "eslint": "^7.19.0",
119 - "eslint-config-standard": "^14.1.1", 119 + "eslint-config-standard": "^16.0.2",
120 "eslint-friendly-formatter": "^4.0.1", 120 "eslint-friendly-formatter": "^4.0.1",
121 - "eslint-loader": "^3.0.4",
122 "eslint-plugin-html": "^6.1.1", 121 "eslint-plugin-html": "^6.1.1",
123 "eslint-plugin-import": "^2.22.1", 122 "eslint-plugin-import": "^2.22.1",
124 - "eslint-plugin-node": "^9.2.0", 123 + "eslint-plugin-node": "^11.1.0",
125 "eslint-plugin-promise": "^4.2.1", 124 "eslint-plugin-promise": "^4.2.1",
126 - "eslint-plugin-standard": "^4.1.0", 125 + "eslint-webpack-plugin": "^2.5.0",
127 - "file-loader": "^6.2.0", 126 + "html-webpack-plugin": "^5.0.0",
128 - "html-webpack-plugin": "^4.5.1", 127 + "mini-css-extract-plugin": "1.3.5",
129 - "mini-css-extract-plugin": "1.3.4",
130 "multispinner": "^0.2.1", 128 "multispinner": "^0.2.1",
131 "node-loader": "^1.0.2", 129 "node-loader": "^1.0.2",
132 "portfinder": "^1.0.28", 130 "portfinder": "^1.0.28",
133 - "sass": "^1.32.5", 131 + "sass": "^1.32.6",
134 - "sass-loader": "^10.1.1", 132 + "sass-loader": "^11.0.0",
135 "split2": "^3.2.2", 133 "split2": "^3.2.2",
136 "style-loader": "^2.0.0", 134 "style-loader": "^2.0.0",
137 "svg-sprite-loader": "^5.2.1", 135 "svg-sprite-loader": "^5.2.1",
138 - "terser-webpack-plugin": "^4.2.3", 136 + "terser-webpack-plugin": "^5.1.1",
139 "thread-loader": "^3.0.1", 137 "thread-loader": "^3.0.1",
140 - "through2-filter": "^3.0.0", 138 + "ts-loader": "^8.0.15",
141 - "ts-loader": "^8.0.14",
142 "typescript": "^4.1.3", 139 "typescript": "^4.1.3",
143 - "url-loader": "^4.1.1",
144 "vue-html-loader": "^1.2.4", 140 "vue-html-loader": "^1.2.4",
145 "vue-loader": "^15.9.6", 141 "vue-loader": "^15.9.6",
146 "vue-style-loader": "^4.1.2", 142 "vue-style-loader": "^4.1.2",
147 "vue-template-compiler": "^2.6.12", 143 "vue-template-compiler": "^2.6.12",
148 - "webpack": "^4.44.2", 144 + "webpack": "^5.21.2",
149 - "webpack-cli": "^3.3.12", 145 + "webpack-cli": "^4.5.0",
150 "webpack-dev-server": "^3.11.2", 146 "webpack-dev-server": "^3.11.2",
151 "webpack-hot-middleware": "^2.25.0", 147 "webpack-hot-middleware": "^2.25.0",
152 "webpack-merge": "^5.7.3" 148 "webpack-merge": "^5.7.3"
......
1 // 这里是定义菜单的地方,详情请查看 https://electronjs.org/docs/api/menu 1 // 这里是定义菜单的地方,详情请查看 https://electronjs.org/docs/api/menu
2 import { dialog } from 'electron' 2 import { dialog } from 'electron'
3 import { type, arch, release } from 'os' 3 import { type, arch, release } from 'os'
4 -import { version } from '../../../package.json' 4 +import packageInfo from '../../../package.json'
5 5
6 const menu = [ 6 const menu = [
7 { 7 {
...@@ -24,12 +24,12 @@ const menu = [ ...@@ -24,12 +24,12 @@ const menu = [
24 } 24 }
25 }] 25 }]
26 }] 26 }]
27 -function info () { 27 +function info() {
28 dialog.showMessageBox({ 28 dialog.showMessageBox({
29 title: '关于', 29 title: '关于',
30 type: 'info', 30 type: 'info',
31 message: 'electron-Vue框架', 31 message: 'electron-Vue框架',
32 - detail: `版本信息:${version}\n引擎版本:${process.versions.v8}\n当前系统:${type()} ${arch()} ${release()}`, 32 + detail: `版本信息:${packageInfo.version}\n引擎版本:${process.versions.v8}\n当前系统:${type()} ${arch()} ${release()}`,
33 noLink: true, 33 noLink: true,
34 buttons: ['查看github', '确定'] 34 buttons: ['查看github', '确定']
35 }) 35 })
......
...@@ -2,7 +2,7 @@ import { app, ipcMain, BrowserWindow, dialog } from 'electron' ...@@ -2,7 +2,7 @@ import { app, ipcMain, BrowserWindow, dialog } from 'electron'
2 import { join } from 'path' 2 import { join } from 'path'
3 import { arch, platform } from 'os' 3 import { arch, platform } from 'os'
4 import { stat, remove } from 'fs-extra' 4 import { stat, remove } from 'fs-extra'
5 -import { version } from '../../../package.json' 5 +import packageInfo from '../../../package.json'
6 6
7 7
8 /** 8 /**
...@@ -19,7 +19,7 @@ class Main { ...@@ -19,7 +19,7 @@ class Main {
19 19
20 public mainWindow: BrowserWindow = null 20 public mainWindow: BrowserWindow = null
21 public downloadUrl: string = "" 21 public downloadUrl: string = ""
22 - public version: string = version 22 + public version: string = packageInfo.version
23 public baseUrl: string = '' 23 public baseUrl: string = ''
24 public Sysarch: string = arch().includes('64') ? 'win64' : 'win32' 24 public Sysarch: string = arch().includes('64') ? 'win64' : 'win32'
25 public HistoryFilePath = join(app.getPath('downloads'), platform().includes('win32') ? `electron_${this.version}_${this.Sysarch}.exe` : `electron_${this.version}_mac.dmg`) 25 public HistoryFilePath = join(app.getPath('downloads'), platform().includes('win32') ? `electron_${this.version}_${this.Sysarch}.exe` : `electron_${this.version}_mac.dmg`)
......
此文件的差异太大,无法显示。