提交 8daa640d authored 作者: 王鹏飞's avatar 王鹏飞

升级脚手架

上级 e6a30879
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`')
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,
...@@ -21,6 +22,8 @@ let config = { ...@@ -21,6 +22,8 @@ let config = {
webpack: {} webpack: {}
} }
config.RegStrs = RegStrs
let vueClientConfig = {} let vueClientConfig = {}
config.domain = '' config.domain = ''
if (config.isDev === 'development') { if (config.isDev === 'development') {
......
/* 由于正则表达式,不能进行跟 gulpfile 中 去注释 在一起 */
module.exports = {
regExp_static: /('|"|`)[\.|\/]*?static\/(.*?\.(png|jpe?g|gif|svg|ico)(\?.*)?)\1/g
}
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
}
}
...@@ -22,6 +22,8 @@ const $GLOBAL = { ...@@ -22,6 +22,8 @@ const $GLOBAL = {
EntryStaticPath: path.resolve(__dirname, '../' + 'static'), EntryStaticPath: path.resolve(__dirname, '../' + 'static'),
OutputStaticPath: path.resolve(__dirname, '../' + _conf.DesDir + '/static'), OutputStaticPath: path.resolve(__dirname, '../' + _conf.DesDir + '/static'),
RegStrs: _conf.RegStrs,
webConf: { webConf: {
'isDev': _conf.isDev, 'isDev': _conf.isDev,
'serverPort': process.env.SERVER_PORT || 8000, 'serverPort': process.env.SERVER_PORT || 8000,
...@@ -52,7 +54,8 @@ $GLOBAL.BaseConfig = { ...@@ -52,7 +54,8 @@ $GLOBAL.BaseConfig = {
'@api': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/api'), '@api': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/api'),
'@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', '.json', '.jsx', '.vue']
}, },
module: { module: {
rules: [ rules: [
...@@ -62,6 +65,12 @@ $GLOBAL.BaseConfig = { ...@@ -62,6 +65,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'
...@@ -71,10 +80,32 @@ $GLOBAL.BaseConfig = { ...@@ -71,10 +80,32 @@ $GLOBAL.BaseConfig = {
exclude: /(node_modules)|(dist)/, exclude: /(node_modules)|(dist)/,
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {
presets: ['env', 'stage-2'], presets: [[
'@babel/preset-env',
{
"targets": {
"browsers": [
"last 2 versions",
"ie >= 11"
],
},
corejs: '3.6.5',
useBuiltIns: 'usage'
}
]],
plugins: [ plugins: [
'transform-vue-jsx', '@babel/plugin-syntax-jsx',
'syntax-dynamic-import' '@babel/plugin-proposal-class-properties',
'@babel/plugin-syntax-dynamic-import',
[
'@babel/plugin-transform-runtime',
{
corejs: 3,
helpers: true,
regenerator: true,
useESModules: false
}
]
] ]
} }
}, },
......
...@@ -9,6 +9,7 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin') ...@@ -9,6 +9,7 @@ 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 VconsoleWebpackPlugin = require('vconsole-webpack-plugin')
const $GLOBAL = require('./webpack.base.conf') const $GLOBAL = require('./webpack.base.conf')
...@@ -158,6 +159,12 @@ if ($GLOBAL.isDev === 'development') { ...@@ -158,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,
...@@ -167,11 +174,11 @@ if ($GLOBAL.isDev === 'development') { ...@@ -167,11 +174,11 @@ if ($GLOBAL.isDev === 'development') {
return content return content
} }
} }
]) ]),
// $GLOBAL.isDev === 'test' && new VconsoleWebpackPlugin({ new VconsoleWebpackPlugin({
// filter: [], filter: [],
// enable: $GLOBAL.isEnableToIphoneDebugger enable: $GLOBAL.isEnableToIphoneDebugger
// }) })
], ],
optimization: { optimization: {
runtimeChunk: { runtimeChunk: {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"name": "@god/vue-client", "name": "@god/vue-client",
"version": "3.0.13", "version": "3.0.14",
"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 node build/getSSL.js && 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",
...@@ -27,44 +28,47 @@ ...@@ -27,44 +28,47 @@
"devDependencies": { "devDependencies": {
"@xunlei/vue-lazy-component": "^1.1.3", "@xunlei/vue-lazy-component": "^1.1.3",
"acorn": "^7.1.1", "acorn": "^7.1.1",
"ali-oss": "^6.5.1", "ali-oss": "^6.11.2",
"autoprefixer": "^9.7.5", "autoprefixer": "^9.8.6",
"babel-core": "^6.26.3",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.5", "babel-loader": "^8.1.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0", "clean-webpack-plugin": "^1.0.1",
"babel-plugin-syntax-jsx": "^6.18.0", "copy-webpack-plugin": "^5.1.2",
"babel-plugin-transform-vue-jsx": "^3.7.0", "css-loader": "^4.3.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-2": "^6.24.1",
"clean-webpack-plugin": "^1.0.0",
"copy-webpack-plugin": "^5.1.1",
"css-loader": "^3.4.2",
"dart-sass": "^1.25.0", "dart-sass": "^1.25.0",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-standard": "^14.1.1", "eslint-config-standard": "^14.1.1",
"eslint-loader": "^3.0.4", "eslint-loader": "^3.0.4",
"eslint-plugin-html": "^6.0.0", "eslint-plugin-html": "^6.1.0",
"eslint-plugin-import": "^2.20.2", "eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1", "eslint-plugin-standard": "^4.0.1",
"svg-sprite-loader": "^5.0.0", "svg-sprite-loader": "^5.0.0",
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"file-loader": "^6.0.0", "file-loader": "^6.1.1",
"html-webpack-plugin": "^4.0.4", "html-webpack-plugin": "^4.5.0",
"mini-css-extract-plugin": "^0.9.0", "mini-css-extract-plugin": "^0.9.0",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"request": "^2.88.2", "request": "^2.88.2",
"sass-loader": "^7.3.1", "sass-loader": "^10.0.3",
"style-loader": "^1.1.3", "style-loader": "^2.0.0",
"url-loader": "^4.0.0", "url-loader": "^4.1.1",
"vconsole-webpack-plugin": "^1.5.2", "vconsole-webpack-plugin": "^1.5.2",
"webpack": "^4.42.1", "webpack": "^4.44.2",
"webpack-cli": "^3.3.11", "webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.10.3", "webpack-dev-server": "^3.11.0",
"webpack-merge": "^4.2.2" "webpack-merge": "^4.2.2",
"@babel/core": "^7.11.6",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-jsx": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"@babel/runtime-corejs3": "^7.11.2",
"html-replace-webpack-plugin": "^2.5.6",
"semver": "^1.1.4"
}, },
"dependencies": { "dependencies": {
"@ezijing/vue-form": "^2.0.12", "@ezijing/vue-form": "^2.0.12",
...@@ -76,9 +80,7 @@ ...@@ -76,9 +80,7 @@
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"npm": "^6.14.8", "npm": "^6.14.8",
"promise.prototype.finally": "^3.1.2",
"qrcode.vue": "^1.7.0", "qrcode.vue": "^1.7.0",
"regenerator": "^0.14.4",
"swiper": "^5.4.5", "swiper": "^5.4.5",
"tween.js": "^16.6.0", "tween.js": "^16.6.0",
"vue": "^2.6.11", "vue": "^2.6.11",
...@@ -89,6 +91,10 @@ ...@@ -89,6 +91,10 @@
"vue-router": "^3.1.6", "vue-router": "^3.1.6",
"vue-scrollmagic": "^1.2.0", "vue-scrollmagic": "^1.2.0",
"vue-template-compiler": "^2.6.11", "vue-template-compiler": "^2.6.11",
"vuex": "^3.1.3" "vuex": "^3.1.3",
"core-js": "^3.6.5"
},
"engines": {
"node": ">=8.9"
} }
} }
...@@ -20,10 +20,6 @@ import './icons/index.js' ...@@ -20,10 +20,6 @@ import './icons/index.js'
Vue.use(VueForm) Vue.use(VueForm)
Vue.use(VueLazyComponent) Vue.use(VueLazyComponent)
/* 兼容处理 start */
/* 处理低版本浏览器支持axios finally问题 */
require('promise.prototype.finally').shim()
/* 兼容处理 end */
Vue.use(VueI18n) Vue.use(VueI18n)
const i18n = createI18n() const i18n = createI18n()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论