Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
211fd67d
提交
211fd67d
authored
10月 09, 2020
作者:
zyx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
升级vue-client框架
上级
a5f9e0e8
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
95 行增加
和
54 行删除
+95
-54
checkNodeVersion.js
client/build/checkNodeVersion.js
+15
-0
config.js
client/build/config.js
+7
-2
getSSL.js
client/build/getSSL.js
+10
-0
regExpStr.js
client/build/regExpStr.js
+4
-0
stringReplaceLoader.js
client/build/stringReplaceLoader.js
+10
-0
uploadAliyunCDN.js
client/build/uploadAliyunCDN.js
+3
-28
webpack.base.conf.js
client/build/webpack.base.conf.js
+9
-1
webpack.client.conf.js
client/build/webpack.client.conf.js
+27
-18
package-lock.json
client/package-lock.json
+0
-0
package.json
client/package.json
+10
-5
没有找到文件。
client/build/checkNodeVersion.js
0 → 100644
浏览文件 @
211fd67d
var
semver
=
require
(
'semver'
)
var
requiredVersion
=
require
(
'../package.json'
).
engines
.
node
function
checkNodeVersion
(
wanted
,
id
)
{
if
(
!
semver
.
satisfies
(
process
.
version
,
wanted
))
{
console
.
log
(
'
\
x1b[91m%s
\
x1B[0m'
,
'You are using Node '
+
process
.
version
+
', but this version of '
+
id
+
' requires Node '
+
wanted
+
'.
\
nPlease upgrade your Node version.'
)
process
.
exit
(
1
)
}
}
checkNodeVersion
(
requiredVersion
,
'`node uploadAliyunCDN.js`'
)
client/build/config.js
浏览文件 @
211fd67d
const
isDev
=
process
.
env
.
NODE_ENV
const
isDev
=
process
.
env
.
NODE_ENV
const
RegStrs
=
require
(
'./regExpStr.js'
)
let
config
=
{
let
config
=
{
isDev
:
isDev
,
isDev
:
isDev
,
...
@@ -12,6 +13,8 @@ let config = {
...
@@ -12,6 +13,8 @@ let config = {
isHttps
:
true
,
isHttps
:
true
,
isEnableToIphoneDebugger
:
false
,
CDN_BASE
:
'https://zws-imgs-pub.ezijing.com/'
,
CDN_BASE
:
'https://zws-imgs-pub.ezijing.com/'
,
CDN_DIR
:
'static/build/learn-mba/'
,
CDN_DIR
:
'static/build/learn-mba/'
,
isUploadStatic
:
false
,
isUploadStatic
:
false
,
...
@@ -19,10 +22,12 @@ let config = {
...
@@ -19,10 +22,12 @@ let config = {
webpack
:
{}
webpack
:
{}
}
}
config
.
RegStrs
=
RegStrs
let
vueClientConfig
=
{}
let
vueClientConfig
=
{}
config
.
domain
=
'
dev.ezijing.com
'
config
.
domain
=
''
if
(
config
.
isDev
===
'development'
)
{
if
(
config
.
isDev
===
'development'
)
{
config
.
url
=
'http://
dev.ezijing.com
:12002'
config
.
url
=
'http://
'
+
config
.
domain
+
'
:12002'
try
{
try
{
vueClientConfig
=
require
(
'../.config.dev.js'
)
vueClientConfig
=
require
(
'../.config.dev.js'
)
}
catch
(
error
)
{
}
catch
(
error
)
{
...
...
client/build/getSSL.js
0 → 100644
浏览文件 @
211fd67d
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path'
)
const
request
=
require
(
'request'
)
const
_conf
=
require
(
'./config'
)
fs
.
writeFileSync
(
path
.
join
(
__dirname
,
_conf
.
domain
+
'.key'
),
''
,
{
encoding
:
'utf8'
,
mode
:
0o755
})
fs
.
writeFileSync
(
path
.
join
(
__dirname
,
_conf
.
domain
+
'.pem'
),
''
,
{
encoding
:
'utf8'
,
mode
:
0o755
})
request
(
'https://ssl.godzyx.com/'
+
_conf
.
domain
+
'/'
+
_conf
.
domain
+
'.key?get=allow'
).
pipe
(
fs
.
createWriteStream
(
path
.
join
(
__dirname
,
_conf
.
domain
+
'.key'
)))
request
(
'https://ssl.godzyx.com/'
+
_conf
.
domain
+
'/'
+
_conf
.
domain
+
'.pem?get=allow'
).
pipe
(
fs
.
createWriteStream
(
path
.
join
(
__dirname
,
_conf
.
domain
+
'.pem'
)))
client/build/regExpStr.js
0 → 100644
浏览文件 @
211fd67d
/* 由于正则表达式,不能进行跟 gulpfile 中 去注释 在一起 */
module
.
exports
=
{
regExp_static
:
/
(
'|"|`
)[\.
|
\/]
*
?
static
\/(
.*
?\.(
png|jpe
?
g|gif|svg|ico
)(\?
.*
)?)\1
/g
}
client/build/stringReplaceLoader.js
0 → 100644
浏览文件 @
211fd67d
const
_conf
=
require
(
'./config'
)
module
.
exports
=
function
(
source
)
{
if
(
_conf
.
isDev
!==
'development'
)
{
return
source
.
replace
(
_conf
.
RegStrs
.
regExp_static
,
'$1'
+
_conf
.
CDN_BASE
+
_conf
.
CDN_DIR
+
'static/$2$1'
)
}
else
{
return
source
}
}
client/build/uploadAliyunCDN.js
浏览文件 @
211fd67d
/**
* 本文件执行,需要 node -v >= v8.11.3
* 原因:其中使用很多es6新特性,需要高版本才能直接识别并运行
* 放服务器上 上传慢,而且经常报错(没找到原因),最后改为打包完成后自动上传不在服务器上deploy时再上传了
*/
const
fs
=
require
(
'fs'
)
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path'
)
const
path
=
require
(
'path'
)
// 这个包本身也是用es6语法写的,低版本node编译解析不了
const
OSS
=
require
(
'ali-oss'
)
const
OSS
=
require
(
'ali-oss'
)
const
conf
=
require
(
'./config'
)
const
conf
=
require
(
'./config'
)
...
@@ -18,30 +13,21 @@ const client = new OSS({
...
@@ -18,30 +13,21 @@ const client = new OSS({
bucket
:
'zws-imgs-pub'
bucket
:
'zws-imgs-pub'
})
})
// 通过请求头设置限速。
const
headers
=
{
const
headers
=
{
'x-oss-traffic-limit'
:
8
*
1024
*
100
*
100
// 设置限速,最小100KB/s。设置为 10000KB/s
'x-oss-traffic-limit'
:
8
*
1024
*
100
*
100
}
}
/* 定位到对应 public目录下 */
const
DIR_PATH
=
path
.
join
(
__dirname
,
'../'
+
conf
.
DesDir
)
const
DIR_PATH
=
path
.
join
(
__dirname
,
'../'
+
conf
.
DesDir
)
/* 上传对应目录 */
const
PREFIX_PATH
=
conf
.
CDN_DIR
const
PREFIX_PATH
=
conf
.
CDN_DIR
/* 是否上传static目录 */
const
isUploadStatic
=
conf
.
isUploadStatic
const
isUploadStatic
=
conf
.
isUploadStatic
let
fileCount
=
1
let
fileCount
=
1
/**
* 调用接口,单个文件上传
* @param {string} dirPath 传入对应需要遍历的路径
* @param {function} callback 加入一个回调方法,执行文件上传
*/
async
function
uploadFile
(
prefixPath
,
dirFileName
)
{
async
function
uploadFile
(
prefixPath
,
dirFileName
)
{
try
{
try
{
const
upFilePath
=
prefixPath
.
replace
(
new
RegExp
(
DIR_PATH
,
'gi'
),
''
)
+
path
.
basename
(
dirFileName
)
const
upFilePath
=
prefixPath
.
replace
(
new
RegExp
(
DIR_PATH
,
'gi'
),
''
)
+
path
.
basename
(
dirFileName
)
const
result
=
await
client
.
put
(
prefixPath
+
path
.
basename
(
dirFileName
),
dirFileName
,
{
const
result
=
await
client
.
put
(
prefixPath
+
path
.
basename
(
dirFileName
),
dirFileName
,
{
headers
,
headers
,
timeout
:
600000
// 默认超时时长为60000ms。超时直接报错,限速上传时注意修改超时时长。设置为600s
timeout
:
600000
})
})
if
(
result
.
res
.
status
===
200
)
{
if
(
result
.
res
.
status
===
200
)
{
console
.
log
(
'第'
+
fileCount
++
+
'个文件,已上传:'
+
conf
.
CDN_BASE
+
upFilePath
)
console
.
log
(
'第'
+
fileCount
++
+
'个文件,已上传:'
+
conf
.
CDN_BASE
+
upFilePath
)
...
@@ -53,24 +39,14 @@ async function uploadFile (prefixPath, dirFileName) {
...
@@ -53,24 +39,14 @@ async function uploadFile (prefixPath, dirFileName) {
}
}
}
}
/**
* 循环遍历文件,准备上传文件
* 原生js 遍历方法
* @param {string} dirPath 传入对应需要遍历的路径
* @param {function} callback 加入一个回调方法,执行文件上传
*/
function
uploadfiles
(
dirPath
,
callback
)
{
function
uploadfiles
(
dirPath
,
callback
)
{
/* 根据文件路径读取文件 */
const
files
=
fs
.
readdirSync
(
dirPath
)
const
files
=
fs
.
readdirSync
(
dirPath
)
files
.
forEach
(
function
(
filename
,
i
)
{
files
.
forEach
(
function
(
filename
,
i
)
{
const
filedir
=
path
.
join
(
dirPath
,
filename
)
const
filedir
=
path
.
join
(
dirPath
,
filename
)
const
info
=
fs
.
statSync
(
filedir
)
const
info
=
fs
.
statSync
(
filedir
)
if
(
info
.
isDirectory
())
{
if
(
info
.
isDirectory
())
{
/* 确定是否上传 */
if
(
!
(
isUploadStatic
?
true
:
filename
!==
'static'
))
{
return
}
if
(
!
(
isUploadStatic
?
true
:
filename
!==
'static'
))
{
return
}
/* 得到对应目录结构 */
const
morePath
=
filedir
.
replace
(
new
RegExp
(
DIR_PATH
,
'gi'
),
''
)
+
'/'
const
morePath
=
filedir
.
replace
(
new
RegExp
(
DIR_PATH
,
'gi'
),
''
)
+
'/'
/* 递归,如果是文件夹,就继续遍历该文件夹下面的文件 */
uploadfiles
(
filedir
,
function
(
filedir
)
{
uploadfiles
(
filedir
,
function
(
filedir
)
{
uploadFile
(
path
.
join
(
PREFIX_PATH
,
morePath
),
filedir
)
uploadFile
(
path
.
join
(
PREFIX_PATH
,
morePath
),
filedir
)
})
})
...
@@ -85,5 +61,4 @@ function uploadfiles (dirPath, callback) {
...
@@ -85,5 +61,4 @@ function uploadfiles (dirPath, callback) {
return
true
return
true
}
}
/* 批量上传文件 */
uploadfiles
(
DIR_PATH
,
null
)
uploadfiles
(
DIR_PATH
,
null
)
client/build/webpack.base.conf.js
浏览文件 @
211fd67d
...
@@ -7,6 +7,7 @@ const _conf = require('./config')
...
@@ -7,6 +7,7 @@ const _conf = require('./config')
const
$GLOBAL
=
{
const
$GLOBAL
=
{
isDev
:
_conf
.
isDev
,
isDev
:
_conf
.
isDev
,
ResDir
:
_conf
.
ResDir
,
ResDir
:
_conf
.
ResDir
,
'isEnableToIphoneDebugger'
:
_conf
.
isEnableToIphoneDebugger
,
templatePath
:
path
.
resolve
(
__dirname
,
'../'
+
_conf
.
HtmlPath
),
templatePath
:
path
.
resolve
(
__dirname
,
'../'
+
_conf
.
HtmlPath
),
icoPath
:
_conf
.
IcoPath
,
icoPath
:
_conf
.
IcoPath
,
...
@@ -24,6 +25,7 @@ const $GLOBAL = {
...
@@ -24,6 +25,7 @@ const $GLOBAL = {
webConf
:
{
webConf
:
{
'isDev'
:
_conf
.
isDev
,
'isDev'
:
_conf
.
isDev
,
'serverPort'
:
process
.
env
.
SERVER_PORT
||
8000
,
'serverPort'
:
process
.
env
.
SERVER_PORT
||
8000
,
'isEnableToIphoneDebugger'
:
_conf
.
isEnableToIphoneDebugger
,
'domain'
:
_conf
.
domain
,
'domain'
:
_conf
.
domain
,
'url'
:
_conf
.
url
,
'url'
:
_conf
.
url
,
'isHttps'
:
_conf
.
isHttps
,
'isHttps'
:
_conf
.
isHttps
,
...
@@ -51,7 +53,7 @@ $GLOBAL.BaseConfig = {
...
@@ -51,7 +53,7 @@ $GLOBAL.BaseConfig = {
'@action'
:
path
.
resolve
(
__dirname
,
'../'
+
$GLOBAL
.
ResDir
+
'/action'
),
'@action'
:
path
.
resolve
(
__dirname
,
'../'
+
$GLOBAL
.
ResDir
+
'/action'
),
'@tool'
:
path
.
resolve
(
__dirname
,
'../'
+
$GLOBAL
.
ResDir
+
'/tool'
)
'@tool'
:
path
.
resolve
(
__dirname
,
'../'
+
$GLOBAL
.
ResDir
+
'/tool'
)
},
},
extensions
:
[
'.js'
,
'.js
x'
,
'.json
'
,
'.vue'
]
extensions
:
[
'.js'
,
'.js
on'
,
'.jsx
'
,
'.vue'
]
},
},
module
:
{
module
:
{
rules
:
[
rules
:
[
...
@@ -61,6 +63,12 @@ $GLOBAL.BaseConfig = {
...
@@ -61,6 +63,12 @@ $GLOBAL.BaseConfig = {
exclude
:
/node_modules/
,
exclude
:
/node_modules/
,
enforce
:
'pre'
enforce
:
'pre'
},
},
{
test
:
/
\.(
vue|js|jsx
)
|
((
sa|sc|c
)
ss
)
$/
,
loader
:
'./build/stringReplaceLoader.js'
,
exclude
:
/node_modules/
,
enforce
:
'pre'
},
{
{
test
:
/
\.
vue$/
,
test
:
/
\.
vue$/
,
loader
:
'vue-loader'
loader
:
'vue-loader'
...
...
client/build/webpack.client.conf.js
浏览文件 @
211fd67d
...
@@ -9,7 +9,9 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin')
...
@@ -9,7 +9,9 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin')
const
AutoPrefixer
=
require
(
'autoprefixer'
)
const
AutoPrefixer
=
require
(
'autoprefixer'
)
const
MiniCssExtractPlugin
=
require
(
'mini-css-extract-plugin'
)
const
MiniCssExtractPlugin
=
require
(
'mini-css-extract-plugin'
)
const
HtmlWebpackPlugin
=
require
(
'html-webpack-plugin'
)
const
HtmlWebpackPlugin
=
require
(
'html-webpack-plugin'
)
const
HtmlReplaceWebpackPlugin
=
require
(
'html-replace-webpack-plugin'
)
const
CopyWebpackPlugin
=
require
(
'copy-webpack-plugin'
)
const
CopyWebpackPlugin
=
require
(
'copy-webpack-plugin'
)
const
VconsoleWebpackPlugin
=
require
(
'vconsole-webpack-plugin'
)
const
$GLOBAL
=
require
(
'./webpack.base.conf'
)
const
$GLOBAL
=
require
(
'./webpack.base.conf'
)
...
@@ -26,9 +28,10 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -26,9 +28,10 @@ if ($GLOBAL.isDev === 'development') {
port
:
$GLOBAL
.
webConf
.
serverPort
,
port
:
$GLOBAL
.
webConf
.
serverPort
,
disableHostCheck
:
false
,
disableHostCheck
:
false
,
host
:
$GLOBAL
.
webConf
.
domain
||
'localhost'
,
host
:
$GLOBAL
.
webConf
.
domain
||
'localhost'
,
http2
:
false
,
https
:
$GLOBAL
.
webConf
.
isHttps
&&
{
https
:
$GLOBAL
.
webConf
.
isHttps
&&
{
key
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
'../static/cert/dev.ezijing.com
.key'
)),
key
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
$GLOBAL
.
webConf
.
domain
+
'
.key'
)),
cert
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
'../static/cert/dev.ezijing.com
.pem'
))
cert
:
fs
.
readFileSync
(
path
.
join
(
__dirname
,
$GLOBAL
.
webConf
.
domain
+
'
.pem'
))
},
},
overlay
:
{
overlay
:
{
errors
:
true
errors
:
true
...
@@ -77,7 +80,7 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -77,7 +80,7 @@ if ($GLOBAL.isDev === 'development') {
}
}
},
},
{
{
loader
:
'sass-loader'
,
// 不再使用本身默认 node-sass,部分mac安装有问题。
loader
:
'sass-loader'
,
options
:
{
options
:
{
implementation
:
require
(
'dart-sass'
)
implementation
:
require
(
'dart-sass'
)
}
}
...
@@ -92,6 +95,10 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -92,6 +95,10 @@ if ($GLOBAL.isDev === 'development') {
template
:
$GLOBAL
.
templatePath
,
template
:
$GLOBAL
.
templatePath
,
inject
:
true
,
inject
:
true
,
favicon
:
$GLOBAL
.
icoPath
favicon
:
$GLOBAL
.
icoPath
}),
new
VconsoleWebpackPlugin
({
filter
:
[],
enable
:
$GLOBAL
.
isEnableToIphoneDebugger
})
})
]
]
})
})
...
@@ -100,7 +107,7 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -100,7 +107,7 @@ if ($GLOBAL.isDev === 'development') {
mode
:
'production'
,
mode
:
'production'
,
entry
:
{
entry
:
{
app
:
$GLOBAL
.
EntryPath
,
app
:
$GLOBAL
.
EntryPath
,
vendor
:
[
'vue'
,
'vue-router'
]
vendor
:
[
'vue'
,
'vue-router'
,
'vue-i18n'
]
},
},
module
:
{
module
:
{
rules
:
[{
rules
:
[{
...
@@ -128,7 +135,7 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -128,7 +135,7 @@ if ($GLOBAL.isDev === 'development') {
}
}
},
},
{
{
loader
:
'sass-loader'
,
// 不再使用本身默认 node-sass,部分mac安装有问题。
loader
:
'sass-loader'
,
options
:
{
options
:
{
implementation
:
require
(
'dart-sass'
)
implementation
:
require
(
'dart-sass'
)
}
}
...
@@ -152,6 +159,12 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -152,6 +159,12 @@ if ($GLOBAL.isDev === 'development') {
collapseWhitespace
:
true
collapseWhitespace
:
true
}
}
}),
}),
new
HtmlReplaceWebpackPlugin
([
{
pattern
:
$GLOBAL
.
RegStrs
.
regExp_static
,
replacement
:
'$1'
+
$GLOBAL
.
webConf
.
CDN_PATH
+
'static/$2$1'
}
]),
new
CopyWebpackPlugin
([
new
CopyWebpackPlugin
([
{
{
from
:
$GLOBAL
.
EntryStaticPath
,
from
:
$GLOBAL
.
EntryStaticPath
,
...
@@ -161,7 +174,11 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -161,7 +174,11 @@ if ($GLOBAL.isDev === 'development') {
return
content
return
content
}
}
}
}
])
]),
new
VconsoleWebpackPlugin
({
filter
:
[],
enable
:
$GLOBAL
.
isEnableToIphoneDebugger
})
],
],
optimization
:
{
optimization
:
{
runtimeChunk
:
{
runtimeChunk
:
{
...
@@ -170,27 +187,19 @@ if ($GLOBAL.isDev === 'development') {
...
@@ -170,27 +187,19 @@ if ($GLOBAL.isDev === 'development') {
splitChunks
:
{
splitChunks
:
{
chunks
:
'async'
,
chunks
:
'async'
,
minSize
:
30000
,
minSize
:
30000
,
maxSize
:
400000
,
// 大于400kb 会再进行拆分,可以进行优化时,添加
maxSize
:
400000
,
minChunks
:
1
,
minChunks
:
1
,
maxAsyncRequests
:
5
,
// 按需加载块时并行请求的最大数量
maxAsyncRequests
:
5
,
maxInitialRequests
:
3
,
// 初始页面加载时并行请求的最大数量
maxInitialRequests
:
3
,
name
:
false
,
name
:
false
,
cacheGroups
:
{
cacheGroups
:
{
vendor
:
{
// 将所有node_modules中模块 js打包到一起,并拆分
vendor
:
{
name
:
'vendor'
,
name
:
'vendor'
,
chunks
:
'initial'
,
chunks
:
'initial'
,
priority
:
-
10
,
priority
:
-
10
,
reuseExistingChunk
:
false
,
reuseExistingChunk
:
false
,
test
:
/node_modules
\/(
.*
)\.
js/
test
:
/node_modules
\/(
.*
)\.
js/
},
},
// styles: { // 将所有node_modules中模块 css、scss打包到一起,并拆分,暂时没用,还在研究
// name: 'styles',
// test: /node_modules\/\.(sa|sc|c)ss$/,
// chunks: 'all',
// minChunks: 1,
// reuseExistingChunk: true,
// enforce: true
// }
}
}
}
}
}
}
...
...
client/package-lock.json
浏览文件 @
211fd67d
差异被折叠。
点击展开。
client/package.json
浏览文件 @
211fd67d
{
{
"name"
:
"@god/vue-client"
,
"name"
:
"@god/vue-client"
,
"version"
:
"3.0.
5
"
,
"version"
:
"3.0.
11
"
,
"description"
:
"适应于公司全系统的纯客户端开发模型"
,
"description"
:
"适应于公司全系统的纯客户端开发模型"
,
"main"
:
"index.js"
,
"main"
:
"index.js"
,
"scripts"
:
{
"scripts"
:
{
"lint"
:
"eslint --ext .js --ext .jsx --ext .vue src/"
,
"lint"
:
"eslint --ext .js --ext .jsx --ext .vue src/"
,
"lint:fix"
:
"eslint --fix --ext .js --ext .jsx --ext .vue src/"
,
"lint:fix"
:
"eslint --fix --ext .js --ext .jsx --ext .vue src/"
,
"dev"
:
"cross-env NODE_ENV=development SERVER_PORT=3001 webpack-dev-server --inline --progress --config build/webpack.client.conf.js"
,
"dev"
:
"npm run check:node && cross-env NODE_ENV=development node build/getSSL.js && cross-env NODE_ENV=development SERVER_PORT=3001 webpack-dev-server --inline --progress --config build/webpack.client.conf.js"
,
"build:test"
:
"cross-env NODE_ENV=test webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=test n use 8.11.3 ./build/uploadAliyunCDN.js"
,
"build:test"
:
"npm run check:node && cross-env NODE_ENV=test webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=test node ./build/uploadAliyunCDN.js"
,
"build:pro"
:
"cross-env NODE_ENV=production webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=production n use 8.11.3 ./build/uploadAliyunCDN.js"
"build:pro"
:
"npm run check:node && cross-env NODE_ENV=production webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=production node ./build/uploadAliyunCDN.js"
,
"check:node"
:
"node build/checkNodeVersion.js"
},
},
"repository"
:
{
"repository"
:
{
"type"
:
"git"
,
"type"
:
"git"
,
...
@@ -60,7 +61,11 @@
...
@@ -60,7 +61,11 @@
"webpack"
:
"^4.42.1"
,
"webpack"
:
"^4.42.1"
,
"webpack-cli"
:
"^3.3.11"
,
"webpack-cli"
:
"^3.3.11"
,
"webpack-dev-server"
:
"^3.10.3"
,
"webpack-dev-server"
:
"^3.10.3"
,
"webpack-merge"
:
"^4.2.2"
"webpack-merge"
:
"^4.2.2"
,
"html-replace-webpack-plugin"
:
"^2.5.6"
,
"request"
:
"^2.88.2"
,
"semver"
:
"^1.1.4"
,
"vconsole-webpack-plugin"
:
"^1.5.2"
},
},
"dependencies"
:
{
"dependencies"
:
{
"axios"
:
"^0.19.2"
,
"axios"
:
"^0.19.2"
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论