@ -1,17 +0,0 @@ |
|||||||
{ |
|
||||||
"presets": [ |
|
||||||
["env", { |
|
||||||
"modules": false, |
|
||||||
"targets": { |
|
||||||
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"] |
|
||||||
} |
|
||||||
}], |
|
||||||
"stage-2" |
|
||||||
], |
|
||||||
"plugins":["transform-vue-jsx", "transform-runtime"], |
|
||||||
"env": { |
|
||||||
"development":{ |
|
||||||
"plugins": ["dynamic-import-node"] |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,8 @@ |
|||||||
|
ENV = 'development' |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VUE_APP_BASE_API = 'http://localhost:8000' |
||||||
|
VUE_APP_WS_API = 'ws://localhost:8000' |
||||||
|
|
||||||
|
# 是否启用 babel-plugin-dynamic-import-node插件 |
||||||
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true |
@ -0,0 +1,5 @@ |
|||||||
|
ENV = 'production' |
||||||
|
|
||||||
|
# 接口地址 |
||||||
|
VUE_APP_BASE_API = 'https://yshopapi.dayouqiantu.cn' |
||||||
|
VUE_APP_WS_API = 'ws://yshopapi.dayouqiantu.cn' |
@ -1,3 +1,4 @@ |
|||||||
build/*.js |
build/*.js |
||||||
config/*.js |
|
||||||
src/assets |
src/assets |
||||||
|
public |
||||||
|
dist |
||||||
|
@ -1,10 +0,0 @@ |
|||||||
// https://github.com/michael-ciniawsky/postcss-load-config
|
|
||||||
|
|
||||||
module.exports = { |
|
||||||
"plugins": { |
|
||||||
"postcss-import": {}, |
|
||||||
"postcss-url": {}, |
|
||||||
// to edit target browsers: use "browserslist" field in package.json
|
|
||||||
"autoprefixer": {} |
|
||||||
} |
|
||||||
} |
|
@ -1,5 +1,5 @@ |
|||||||
language: node_js |
language: node_js |
||||||
node_js: stable |
node_js: 10 |
||||||
script: npm run test |
script: npm run test |
||||||
notifications: |
notifications: |
||||||
email: false |
email: false |
||||||
|
@ -0,0 +1,11 @@ |
|||||||
|
const plugins = ['@vue/babel-plugin-transform-vue-jsx'] |
||||||
|
// 生产环境移除console
|
||||||
|
if (process.env.NODE_ENV === 'production') { |
||||||
|
plugins.push('transform-remove-console') |
||||||
|
} |
||||||
|
module.exports = { |
||||||
|
plugins: plugins, |
||||||
|
presets: [ |
||||||
|
'@vue/app' |
||||||
|
] |
||||||
|
} |
@ -1,67 +0,0 @@ |
|||||||
'use strict' |
|
||||||
require('./check-versions')() |
|
||||||
|
|
||||||
const ora = require('ora') |
|
||||||
const rm = require('rimraf') |
|
||||||
const path = require('path') |
|
||||||
const chalk = require('chalk') |
|
||||||
const webpack = require('webpack') |
|
||||||
const config = require('../config') |
|
||||||
const webpackConfig = require('./webpack.prod.conf') |
|
||||||
var connect = require('connect') |
|
||||||
var serveStatic = require('serve-static') |
|
||||||
|
|
||||||
const spinner = ora( |
|
||||||
'building for ' + process.env.env_config + ' environment...' |
|
||||||
) |
|
||||||
spinner.start() |
|
||||||
|
|
||||||
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { |
|
||||||
if (err) throw err |
|
||||||
webpack(webpackConfig, (err, stats) => { |
|
||||||
spinner.stop() |
|
||||||
if (err) throw err |
|
||||||
process.stdout.write( |
|
||||||
stats.toString({ |
|
||||||
colors: true, |
|
||||||
modules: false, |
|
||||||
children: false, |
|
||||||
chunks: false, |
|
||||||
chunkModules: false |
|
||||||
}) + '\n\n' |
|
||||||
) |
|
||||||
|
|
||||||
if (stats.hasErrors()) { |
|
||||||
console.log(chalk.red(' Build failed with errors.\n')) |
|
||||||
process.exit(1) |
|
||||||
} |
|
||||||
|
|
||||||
console.log(chalk.cyan(' Build complete.\n')) |
|
||||||
console.log( |
|
||||||
chalk.yellow( |
|
||||||
' Tip: built files are meant to be served over an HTTP server.\n' + |
|
||||||
" Opening index.html over file:// won't work.\n" |
|
||||||
) |
|
||||||
) |
|
||||||
|
|
||||||
if (process.env.npm_config_preview) { |
|
||||||
const port = 9526 |
|
||||||
const host = 'http://localhost:' + port |
|
||||||
const basePath = config.build.assetsPublicPath |
|
||||||
const app = connect() |
|
||||||
|
|
||||||
app.use( |
|
||||||
basePath, |
|
||||||
serveStatic('./dist', { |
|
||||||
index: ['index.html', '/'] |
|
||||||
}) |
|
||||||
) |
|
||||||
|
|
||||||
app.listen(port, function() { |
|
||||||
console.log( |
|
||||||
chalk.green(`> Listening at http://localhost:${port}${basePath}`) |
|
||||||
) |
|
||||||
}) |
|
||||||
} |
|
||||||
}) |
|
||||||
}) |
|
@ -1,62 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const chalk = require('chalk') |
|
||||||
const semver = require('semver') |
|
||||||
const packageConfig = require('../package.json') |
|
||||||
const shell = require('shelljs') |
|
||||||
|
|
||||||
function exec(cmd) { |
|
||||||
return require('child_process') |
|
||||||
.execSync(cmd) |
|
||||||
.toString() |
|
||||||
.trim() |
|
||||||
} |
|
||||||
|
|
||||||
const versionRequirements = [ |
|
||||||
{ |
|
||||||
name: 'node', |
|
||||||
currentVersion: semver.clean(process.version), |
|
||||||
versionRequirement: packageConfig.engines.node |
|
||||||
} |
|
||||||
] |
|
||||||
|
|
||||||
if (shell.which('npm')) { |
|
||||||
versionRequirements.push({ |
|
||||||
name: 'npm', |
|
||||||
currentVersion: exec('npm --version'), |
|
||||||
versionRequirement: packageConfig.engines.npm |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
module.exports = function() { |
|
||||||
const warnings = [] |
|
||||||
|
|
||||||
for (let i = 0; i < versionRequirements.length; i++) { |
|
||||||
const mod = versionRequirements[i] |
|
||||||
|
|
||||||
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { |
|
||||||
warnings.push( |
|
||||||
mod.name + |
|
||||||
': ' + |
|
||||||
chalk.red(mod.currentVersion) + |
|
||||||
' should be ' + |
|
||||||
chalk.green(mod.versionRequirement) |
|
||||||
) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (warnings.length) { |
|
||||||
console.log('') |
|
||||||
console.log( |
|
||||||
chalk.yellow( |
|
||||||
'To use this template, you must update following to modules:' |
|
||||||
) |
|
||||||
) |
|
||||||
|
|
||||||
for (let i = 0; i < warnings.length; i++) { |
|
||||||
const warning = warnings[i] |
|
||||||
console.log(' ' + warning) |
|
||||||
} |
|
||||||
|
|
||||||
process.exit(1) |
|
||||||
} |
|
||||||
} |
|
@ -1,108 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const path = require('path') |
|
||||||
const config = require('../config') |
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin') |
|
||||||
const packageConfig = require('../package.json') |
|
||||||
|
|
||||||
exports.assetsPath = function(_path) { |
|
||||||
const assetsSubDirectory = |
|
||||||
process.env.NODE_ENV === 'production' |
|
||||||
? config.build.assetsSubDirectory |
|
||||||
: config.dev.assetsSubDirectory |
|
||||||
|
|
||||||
return path.posix.join(assetsSubDirectory, _path) |
|
||||||
} |
|
||||||
|
|
||||||
exports.cssLoaders = function(options) { |
|
||||||
options = options || {} |
|
||||||
|
|
||||||
const cssLoader = { |
|
||||||
loader: 'css-loader', |
|
||||||
options: { |
|
||||||
sourceMap: options.sourceMap |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
const postcssLoader = { |
|
||||||
loader: 'postcss-loader', |
|
||||||
options: { |
|
||||||
sourceMap: options.sourceMap |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// generate loader string to be used with extract text plugin
|
|
||||||
function generateLoaders(loader, loaderOptions) { |
|
||||||
const loaders = [] |
|
||||||
|
|
||||||
// Extract CSS when that option is specified
|
|
||||||
// (which is the case during production build)
|
|
||||||
if (options.extract) { |
|
||||||
loaders.push(MiniCssExtractPlugin.loader) |
|
||||||
} else { |
|
||||||
loaders.push('vue-style-loader') |
|
||||||
} |
|
||||||
|
|
||||||
loaders.push(cssLoader) |
|
||||||
|
|
||||||
if (options.usePostCSS) { |
|
||||||
loaders.push(postcssLoader) |
|
||||||
} |
|
||||||
|
|
||||||
if (loader) { |
|
||||||
loaders.push({ |
|
||||||
loader: loader + '-loader', |
|
||||||
options: Object.assign({}, loaderOptions, { |
|
||||||
sourceMap: options.sourceMap |
|
||||||
}) |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
return loaders |
|
||||||
} |
|
||||||
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
|
||||||
return { |
|
||||||
css: generateLoaders(), |
|
||||||
postcss: generateLoaders(), |
|
||||||
less: generateLoaders('less'), |
|
||||||
sass: generateLoaders('sass', { |
|
||||||
indentedSyntax: true |
|
||||||
}), |
|
||||||
scss: generateLoaders('sass'), |
|
||||||
stylus: generateLoaders('stylus'), |
|
||||||
styl: generateLoaders('stylus') |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Generate loaders for standalone style files (outside of .vue)
|
|
||||||
exports.styleLoaders = function(options) { |
|
||||||
const output = [] |
|
||||||
const loaders = exports.cssLoaders(options) |
|
||||||
|
|
||||||
for (const extension in loaders) { |
|
||||||
const loader = loaders[extension] |
|
||||||
output.push({ |
|
||||||
test: new RegExp('\\.' + extension + '$'), |
|
||||||
use: loader |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
return output |
|
||||||
} |
|
||||||
|
|
||||||
exports.createNotifierCallback = () => { |
|
||||||
const notifier = require('node-notifier') |
|
||||||
|
|
||||||
return (severity, errors) => { |
|
||||||
if (severity !== 'error') return |
|
||||||
|
|
||||||
const error = errors[0] |
|
||||||
const filename = error.file && error.file.split('!').pop() |
|
||||||
|
|
||||||
notifier.notify({ |
|
||||||
title: packageConfig.name, |
|
||||||
message: severity + ': ' + error.name, |
|
||||||
subtitle: filename || '', |
|
||||||
icon: path.join(__dirname, 'logo.png') |
|
||||||
}) |
|
||||||
} |
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
'use strict' |
|
||||||
|
|
||||||
module.exports = { |
|
||||||
//You can set the vue-loader configuration by yourself.
|
|
||||||
} |
|
@ -1,122 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const path = require('path') |
|
||||||
const utils = require('./utils') |
|
||||||
const config = require('../config') |
|
||||||
const { VueLoaderPlugin } = require('vue-loader') |
|
||||||
|
|
||||||
const os = require('os'); |
|
||||||
const HappyPack = require('happypack'); |
|
||||||
const happThreadPool = HappyPack.ThreadPool({size: os.cpus().length}); |
|
||||||
|
|
||||||
function resolve(dir) { |
|
||||||
return path.join(__dirname, '..', dir) |
|
||||||
} |
|
||||||
|
|
||||||
const createLintingRule = () => ({ |
|
||||||
// test: /\.(js|vue)$/,
|
|
||||||
// loader: 'eslint-loader',
|
|
||||||
// enforce: 'pre',
|
|
||||||
// include: [resolve('src'), resolve('test')],
|
|
||||||
// options: {
|
|
||||||
// formatter: require('eslint-friendly-formatter'),
|
|
||||||
// emitWarning: !config.dev.showEslintErrorsInOverlay
|
|
||||||
// }
|
|
||||||
}) |
|
||||||
|
|
||||||
module.exports = { |
|
||||||
cache: true, |
|
||||||
context: path.resolve(__dirname, '../'), |
|
||||||
entry:["babel-polyfill","./src/main.js"], |
|
||||||
output: { |
|
||||||
path: config.build.assetsRoot, |
|
||||||
filename: '[name].js', |
|
||||||
publicPath: |
|
||||||
process.env.NODE_ENV === 'production' |
|
||||||
? config.build.assetsPublicPath |
|
||||||
: config.dev.assetsPublicPath |
|
||||||
}, |
|
||||||
resolve: { |
|
||||||
modules: [path.resolve(__dirname, '../node_modules')], |
|
||||||
extensions: ['.js', '.vue', '.json'], |
|
||||||
alias: { |
|
||||||
'@': resolve('src'), |
|
||||||
api: path.resolve(__dirname, '../src/api') |
|
||||||
} |
|
||||||
}, |
|
||||||
module: { |
|
||||||
rules: [ |
|
||||||
...(config.dev.useEslint ? [createLintingRule()] : []), |
|
||||||
{ |
|
||||||
test: /\.vue$/, |
|
||||||
loader: 'vue-loader', |
|
||||||
options: { |
|
||||||
loaders: { |
|
||||||
js: 'happypack/loader?id=js' // 将loader换成happypack
|
|
||||||
} |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
test: /\.js$/, |
|
||||||
loader: ['happypack/loader?id=js'], // 将loader换成happypack
|
|
||||||
include: [ |
|
||||||
resolve('src') |
|
||||||
], // src是项目开发的目录
|
|
||||||
exclude: [path.resolve('../node_modules')] // 不需要编译node_modules下的js
|
|
||||||
}, |
|
||||||
{ |
|
||||||
test: /\.svg$/, |
|
||||||
loader: 'svg-sprite-loader', |
|
||||||
include: [resolve('src/icons')], |
|
||||||
options: { |
|
||||||
symbolId: 'icon-[name]' |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, |
|
||||||
loader: 'url-loader', |
|
||||||
exclude: [resolve('src/icons')], |
|
||||||
options: { |
|
||||||
limit: 10000, |
|
||||||
name: utils.assetsPath('img/[name].[hash:7].[ext]') |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, |
|
||||||
loader: 'url-loader', |
|
||||||
options: { |
|
||||||
limit: 10000, |
|
||||||
name: utils.assetsPath('media/[name].[hash:7].[ext]') |
|
||||||
} |
|
||||||
}, |
|
||||||
{ |
|
||||||
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, |
|
||||||
loader: 'url-loader', |
|
||||||
options: { |
|
||||||
limit: 10000, |
|
||||||
name: utils.assetsPath('fonts/[name].[hash:7].[ext]') |
|
||||||
} |
|
||||||
} |
|
||||||
] |
|
||||||
}, |
|
||||||
plugins: [ |
|
||||||
new VueLoaderPlugin(), |
|
||||||
new HappyPack({ |
|
||||||
id: 'js', |
|
||||||
cache: true, |
|
||||||
loaders: ['babel-loader?cacheDirectory=true'], |
|
||||||
threadPool: happThreadPool |
|
||||||
}) |
|
||||||
], |
|
||||||
node: { |
|
||||||
// prevent webpack from injecting useless setImmediate polyfill because Vue
|
|
||||||
// source contains it (although only uses it if it's native).
|
|
||||||
setImmediate: false, |
|
||||||
// prevent webpack from injecting mocks to Node native modules
|
|
||||||
// that does not make sense for the client
|
|
||||||
dgram: 'empty', |
|
||||||
fs: 'empty', |
|
||||||
net: 'empty', |
|
||||||
tls: 'empty', |
|
||||||
child_process: 'empty' |
|
||||||
} |
|
||||||
} |
|
@ -1,98 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const path = require('path') |
|
||||||
const utils = require('./utils') |
|
||||||
const webpack = require('webpack') |
|
||||||
const config = require('../config') |
|
||||||
const merge = require('webpack-merge') |
|
||||||
const baseWebpackConfig = require('./webpack.base.conf') |
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin') |
|
||||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') |
|
||||||
const portfinder = require('portfinder') |
|
||||||
|
|
||||||
function resolve(dir) { |
|
||||||
return path.join(__dirname, '..', dir) |
|
||||||
} |
|
||||||
|
|
||||||
const HOST = process.env.HOST |
|
||||||
const PORT = process.env.PORT && Number(process.env.PORT) |
|
||||||
|
|
||||||
const devWebpackConfig = merge(baseWebpackConfig, { |
|
||||||
mode: 'development', |
|
||||||
module: { |
|
||||||
rules: utils.styleLoaders({ |
|
||||||
sourceMap: config.dev.cssSourceMap, |
|
||||||
usePostCSS: true |
|
||||||
}) |
|
||||||
}, |
|
||||||
// cheap-module-eval-source-map is faster for development
|
|
||||||
devtool: config.dev.devtool, |
|
||||||
|
|
||||||
// these devServer options should be customized in /config/index.js
|
|
||||||
devServer: { |
|
||||||
clientLogLevel: 'warning', |
|
||||||
historyApiFallback: true, |
|
||||||
hot: true, |
|
||||||
compress: true, |
|
||||||
host: HOST || config.dev.host, |
|
||||||
port: PORT || config.dev.port, |
|
||||||
open: config.dev.autoOpenBrowser, |
|
||||||
overlay: config.dev.errorOverlay |
|
||||||
? { warnings: false, errors: true } |
|
||||||
: false, |
|
||||||
publicPath: config.dev.assetsPublicPath, |
|
||||||
proxy: config.dev.proxyTable, |
|
||||||
quiet: true, // necessary for FriendlyErrorsPlugin
|
|
||||||
watchOptions: { |
|
||||||
poll: config.dev.poll |
|
||||||
} |
|
||||||
}, |
|
||||||
plugins: [ |
|
||||||
new webpack.DefinePlugin({ |
|
||||||
'process.env': require('../config/dev.env') |
|
||||||
}), |
|
||||||
new webpack.HotModuleReplacementPlugin(), |
|
||||||
// https://github.com/ampedandwired/html-webpack-plugin
|
|
||||||
new HtmlWebpackPlugin({ |
|
||||||
filename: 'index.html', |
|
||||||
template: 'index.html', |
|
||||||
inject: true, |
|
||||||
favicon: resolve('favicon.ico'), |
|
||||||
title: 'vue-element-admin', |
|
||||||
templateParameters: { |
|
||||||
BASE_URL: config.dev.assetsPublicPath + config.dev.assetsSubDirectory, |
|
||||||
}, |
|
||||||
}), |
|
||||||
] |
|
||||||
}) |
|
||||||
|
|
||||||
module.exports = new Promise((resolve, reject) => { |
|
||||||
portfinder.basePort = process.env.PORT || config.dev.port |
|
||||||
portfinder.getPort((err, port) => { |
|
||||||
if (err) { |
|
||||||
reject(err) |
|
||||||
} else { |
|
||||||
// publish the new Port, necessary for e2e tests
|
|
||||||
process.env.PORT = port |
|
||||||
// add port to devServer config
|
|
||||||
devWebpackConfig.devServer.port = port |
|
||||||
|
|
||||||
// Add FriendlyErrorsPlugin
|
|
||||||
devWebpackConfig.plugins.push( |
|
||||||
new FriendlyErrorsPlugin({ |
|
||||||
compilationSuccessInfo: { |
|
||||||
messages: [ |
|
||||||
`Your application is running here: http://${ |
|
||||||
devWebpackConfig.devServer.host |
|
||||||
}:${port}` |
|
||||||
] |
|
||||||
}, |
|
||||||
onErrors: config.dev.notifyOnErrors |
|
||||||
? utils.createNotifierCallback() |
|
||||||
: undefined |
|
||||||
}) |
|
||||||
) |
|
||||||
|
|
||||||
resolve(devWebpackConfig) |
|
||||||
} |
|
||||||
}) |
|
||||||
}) |
|
@ -1,188 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const path = require('path') |
|
||||||
const utils = require('./utils') |
|
||||||
const webpack = require('webpack') |
|
||||||
const config = require('../config') |
|
||||||
const merge = require('webpack-merge') |
|
||||||
const baseWebpackConfig = require('./webpack.base.conf') |
|
||||||
const CopyWebpackPlugin = require('copy-webpack-plugin') |
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin') |
|
||||||
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin') |
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin') |
|
||||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') |
|
||||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin') |
|
||||||
|
|
||||||
function resolve(dir) { |
|
||||||
return path.join(__dirname, '..', dir) |
|
||||||
} |
|
||||||
|
|
||||||
const env = require('../config/' + process.env.env_config + '.env') |
|
||||||
|
|
||||||
// For NamedChunksPlugin
|
|
||||||
const seen = new Set() |
|
||||||
const nameLength = 4 |
|
||||||
|
|
||||||
const webpackConfig = merge(baseWebpackConfig, { |
|
||||||
mode: 'production', |
|
||||||
module: { |
|
||||||
rules: utils.styleLoaders({ |
|
||||||
sourceMap: config.build.productionSourceMap, |
|
||||||
extract: true, |
|
||||||
usePostCSS: true |
|
||||||
}) |
|
||||||
}, |
|
||||||
devtool: config.build.productionSourceMap ? config.build.devtool : false, |
|
||||||
output: { |
|
||||||
path: config.build.assetsRoot, |
|
||||||
filename: utils.assetsPath('js/[name].[chunkhash:8].js'), |
|
||||||
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js') |
|
||||||
}, |
|
||||||
plugins: [ |
|
||||||
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
|
||||||
new webpack.DefinePlugin({ |
|
||||||
'process.env': env |
|
||||||
}), |
|
||||||
// extract css into its own file
|
|
||||||
new MiniCssExtractPlugin({ |
|
||||||
filename: utils.assetsPath('css/[name].[contenthash:8].css'), |
|
||||||
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css') |
|
||||||
}), |
|
||||||
// generate dist index.html with correct asset hash for caching.
|
|
||||||
// you can customize output by editing /index.html
|
|
||||||
// see https://github.com/ampedandwired/html-webpack-plugin
|
|
||||||
new HtmlWebpackPlugin({ |
|
||||||
filename: config.build.index, |
|
||||||
template: 'index.html', |
|
||||||
inject: true, |
|
||||||
favicon: resolve('favicon.ico'), |
|
||||||
title: 'vue-element-admin', |
|
||||||
templateParameters: { |
|
||||||
BASE_URL: config.build.assetsPublicPath + config.build.assetsSubDirectory, |
|
||||||
}, |
|
||||||
minify: { |
|
||||||
removeComments: true, |
|
||||||
collapseWhitespace: true, |
|
||||||
removeAttributeQuotes: true |
|
||||||
// more options:
|
|
||||||
// https://github.com/kangax/html-minifier#options-quick-reference
|
|
||||||
} |
|
||||||
// default sort mode uses toposort which cannot handle cyclic deps
|
|
||||||
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
|
||||||
// matter anyway
|
|
||||||
}), |
|
||||||
new ScriptExtHtmlWebpackPlugin({ |
|
||||||
//`runtime` must same as runtimeChunk name. default is `runtime`
|
|
||||||
inline: /runtime\..*\.js$/ |
|
||||||
}), |
|
||||||
// keep chunk.id stable when chunk has no name
|
|
||||||
new webpack.NamedChunksPlugin(chunk => { |
|
||||||
if (chunk.name) { |
|
||||||
return chunk.name |
|
||||||
} |
|
||||||
const modules = Array.from(chunk.modulesIterable) |
|
||||||
if (modules.length > 1) { |
|
||||||
const hash = require('hash-sum') |
|
||||||
const joinedHash = hash(modules.map(m => m.id).join('_')) |
|
||||||
let len = nameLength |
|
||||||
while (seen.has(joinedHash.substr(0, len))) len++ |
|
||||||
seen.add(joinedHash.substr(0, len)) |
|
||||||
return `chunk-${joinedHash.substr(0, len)}` |
|
||||||
} else { |
|
||||||
return modules[0].id |
|
||||||
} |
|
||||||
}), |
|
||||||
// keep module.id stable when vender modules does not change
|
|
||||||
new webpack.HashedModuleIdsPlugin(), |
|
||||||
// copy custom static assets
|
|
||||||
new CopyWebpackPlugin([ |
|
||||||
{ |
|
||||||
from: path.resolve(__dirname, '../static'), |
|
||||||
to: config.build.assetsSubDirectory, |
|
||||||
ignore: ['.*'] |
|
||||||
} |
|
||||||
]) |
|
||||||
], |
|
||||||
optimization: { |
|
||||||
splitChunks: { |
|
||||||
chunks: 'all', |
|
||||||
cacheGroups: { |
|
||||||
libs: { |
|
||||||
name: 'chunk-libs', |
|
||||||
test: /[\\/]node_modules[\\/]/, |
|
||||||
priority: 10, |
|
||||||
chunks: 'initial' // 只打包初始时依赖的第三方
|
|
||||||
}, |
|
||||||
elementUI: { |
|
||||||
name: 'chunk-elementUI', // 单独将 elementUI 拆包
|
|
||||||
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
|
|
||||||
test: /[\\/]node_modules[\\/]element-ui[\\/]/ |
|
||||||
}, |
|
||||||
commons: { |
|
||||||
name: 'chunk-commons', |
|
||||||
test: resolve('src/components'), // 可自定义拓展你的规则
|
|
||||||
minChunks: 3, // 最小公用次数
|
|
||||||
priority: 5, |
|
||||||
reuseExistingChunk: true |
|
||||||
} |
|
||||||
} |
|
||||||
}, |
|
||||||
runtimeChunk: 'single', |
|
||||||
minimizer: [ |
|
||||||
new UglifyJsPlugin({ |
|
||||||
uglifyOptions: { |
|
||||||
mangle: { |
|
||||||
safari10: true |
|
||||||
} |
|
||||||
}, |
|
||||||
sourceMap: config.build.productionSourceMap, |
|
||||||
cache: true, |
|
||||||
parallel: true |
|
||||||
}), |
|
||||||
// Compress extracted CSS. We are using this plugin so that possible
|
|
||||||
// duplicated CSS from different components can be deduped.
|
|
||||||
new OptimizeCSSAssetsPlugin() |
|
||||||
] |
|
||||||
} |
|
||||||
}) |
|
||||||
|
|
||||||
if (config.build.productionGzip) { |
|
||||||
const CompressionWebpackPlugin = require('compression-webpack-plugin') |
|
||||||
|
|
||||||
webpackConfig.plugins.push( |
|
||||||
new CompressionWebpackPlugin({ |
|
||||||
asset: '[path].gz[query]', |
|
||||||
algorithm: 'gzip', |
|
||||||
test: new RegExp( |
|
||||||
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$' |
|
||||||
), |
|
||||||
threshold: 10240, |
|
||||||
minRatio: 0.8 |
|
||||||
}) |
|
||||||
) |
|
||||||
} |
|
||||||
|
|
||||||
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) { |
|
||||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer') |
|
||||||
.BundleAnalyzerPlugin |
|
||||||
|
|
||||||
if (config.build.bundleAnalyzerReport) { |
|
||||||
webpackConfig.plugins.push( |
|
||||||
new BundleAnalyzerPlugin({ |
|
||||||
analyzerPort: 8080, |
|
||||||
generateStatsFile: false |
|
||||||
}) |
|
||||||
) |
|
||||||
} |
|
||||||
|
|
||||||
if (config.build.generateAnalyzerReport) { |
|
||||||
webpackConfig.plugins.push( |
|
||||||
new BundleAnalyzerPlugin({ |
|
||||||
analyzerMode: 'static', |
|
||||||
reportFilename: 'bundle-report.html', |
|
||||||
openAnalyzer: false |
|
||||||
}) |
|
||||||
) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
module.exports = webpackConfig |
|
@ -1,9 +0,0 @@ |
|||||||
'use strict' |
|
||||||
const merge = require('webpack-merge') |
|
||||||
const prodEnv = require('./prod.env') |
|
||||||
|
|
||||||
module.exports = merge(prodEnv, { |
|
||||||
NODE_ENV: '"development"', |
|
||||||
BASE_API: '"http://localhost:8000"' |
|
||||||
//BASE_API: '"https://yshopapi.dayouqiantu.cn"'
|
|
||||||
}) |
|
@ -1,106 +0,0 @@ |
|||||||
'use strict' |
|
||||||
// Template version: 1.2.6
|
|
||||||
const devEnv = require('./dev.env') |
|
||||||
// 获取接口地址
|
|
||||||
const base_url = devEnv.BASE_API.replace(/"/g,'') |
|
||||||
const path = require('path') |
|
||||||
module.exports = { |
|
||||||
dev: { |
|
||||||
// Paths
|
|
||||||
assetsSubDirectory: 'static', |
|
||||||
assetsPublicPath: '/', |
|
||||||
// 配置代理
|
|
||||||
proxyTable: { |
|
||||||
'/auth': { |
|
||||||
// 测试环境
|
|
||||||
target: base_url, |
|
||||||
secure: true, |
|
||||||
changeOrigin: true, |
|
||||||
pathRewrite: { |
|
||||||
'^/auth': 'auth' |
|
||||||
} |
|
||||||
}, |
|
||||||
'/api': { |
|
||||||
// 测试环境
|
|
||||||
target: base_url, |
|
||||||
secure: true, |
|
||||||
changeOrigin: true, |
|
||||||
pathRewrite: { |
|
||||||
'^/api': 'api' |
|
||||||
} |
|
||||||
} |
|
||||||
}, |
|
||||||
|
|
||||||
// Various Dev Server settings
|
|
||||||
host: 'localhost', // can be overwritten by process.env.HOST
|
|
||||||
port: 8013, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
|
||||||
autoOpenBrowser: true, |
|
||||||
errorOverlay: true, |
|
||||||
notifyOnErrors: false, |
|
||||||
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
|
|
||||||
|
|
||||||
// Use Eslint Loader?
|
|
||||||
// If true, your code will be linted during bundling and
|
|
||||||
// linting errors and warnings will be shown in the console.
|
|
||||||
useEslint: true, |
|
||||||
// If true, eslint errors and warnings will also be shown in the error overlay
|
|
||||||
// in the browser.
|
|
||||||
showEslintErrorsInOverlay: false, |
|
||||||
|
|
||||||
/** |
|
||||||
* Source Maps |
|
||||||
*/ |
|
||||||
|
|
||||||
// https://webpack.js.org/configuration/devtool/#development
|
|
||||||
devtool: 'cheap-source-map', |
|
||||||
|
|
||||||
// CSS Sourcemaps off by default because relative paths are "buggy"
|
|
||||||
// with this option, according to the CSS-Loader README
|
|
||||||
// (https://github.com/webpack/css-loader#sourcemaps)
|
|
||||||
// In our experience, they generally work as expected,
|
|
||||||
// just be aware of this issue when enabling this option.
|
|
||||||
cssSourceMap: false |
|
||||||
}, |
|
||||||
|
|
||||||
build: { |
|
||||||
// Template for index.html
|
|
||||||
index: path.resolve(__dirname, '../dist/index.html'), |
|
||||||
|
|
||||||
// Paths
|
|
||||||
assetsRoot: path.resolve(__dirname, '../dist'), |
|
||||||
assetsSubDirectory: 'static', |
|
||||||
|
|
||||||
/** |
|
||||||
* You can set by youself according to actual condition |
|
||||||
* You will need to set this if you plan to deploy your site under a sub path, |
|
||||||
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
|
|
||||||
* then assetsPublicPath should be set to "/bar/". |
|
||||||
* In most cases please use '/' !!! |
|
||||||
*/ |
|
||||||
assetsPublicPath: '/', |
|
||||||
|
|
||||||
/** |
|
||||||
* Source Maps |
|
||||||
*/ |
|
||||||
|
|
||||||
productionSourceMap: false, |
|
||||||
// https://webpack.js.org/configuration/devtool/#production
|
|
||||||
devtool: 'source-map', |
|
||||||
|
|
||||||
// Gzip off by default as many popular static hosts such as
|
|
||||||
// Surge or Netlify already gzip all static assets for you.
|
|
||||||
// Before setting to `true`, make sure to:
|
|
||||||
// npm install --save-dev compression-webpack-plugin
|
|
||||||
productionGzip: false, |
|
||||||
productionGzipExtensions: ['js', 'css'], |
|
||||||
|
|
||||||
// Run the build command with an extra argument to
|
|
||||||
// View the bundle analyzer report after build finishes:
|
|
||||||
// `npm run build --report`
|
|
||||||
// Set to `true` or `false` to always turn it on or off
|
|
||||||
bundleAnalyzerReport: process.env.npm_config_report || false, |
|
||||||
|
|
||||||
// `npm run build:prod --generate_report`
|
|
||||||
generateAnalyzerReport: process.env.npm_config_generate_report || false |
|
||||||
} |
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
'use strict' |
|
||||||
module.exports = { |
|
||||||
NODE_ENV: '"production"', |
|
||||||
BASE_API: '"https://yshopapi.dayouqiantu.cn"' |
|
||||||
} |
|
@ -1 +0,0 @@ |
|||||||
[1110/193651.524:ERROR:crashpad_client_win.cc(491)] CreateProcess: 页面文件太小,无法完成操作。 (0x5AF) |
|
@ -1,22 +0,0 @@ |
|||||||
<!DOCTYPE html> |
|
||||||
<html> |
|
||||||
<head> |
|
||||||
<meta charset="utf-8"> |
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
|
||||||
<style> |
|
||||||
.sampleContainer{position:fixed;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);width:75px;height:100px}.loader{position:relative;width:44px;height:8px;margin:12px auto}.dot{display:inline-block;width:8px;height:8px;border-radius:4px;background:#ccc;position:absolute}.dot_1{animation:animateDot1 1.5s linear infinite;left:12px;background:#e579b8}.dot_2{animation:animateDot2 1.5s linear infinite;animation-delay:.5s;left:24px}.dot_3{animation:animateDot3 1.5s linear infinite;left:12px}.dot_4{animation:animateDot4 1.5s linear infinite;animation-delay:.5s;left:24px}@keyframes animateDot1{0%{transform:rotate(0) translateX(-12px)}25%{transform:rotate(180deg) translateX(-12px)}75%{transform:rotate(180deg) translateX(-12px)}100%{transform:rotate(360deg) translateX(-12px)}}@keyframes animateDot2{0%{transform:rotate(0) translateX(-12px)}25%{transform:rotate(-180deg) translateX(-12px)}75%{transform:rotate(-180deg) translateX(-12px)}100%{transform:rotate(-360deg) translateX(-12px)}}@keyframes animateDot3{0%{transform:rotate(0) translateX(12px)}25%{transform:rotate(180deg) translateX(12px)}75%{transform:rotate(180deg) translateX(12px)}100%{transform:rotate(360deg) translateX(12px)}}@keyframes animateDot4{0%{transform:rotate(0) translateX(12px)}25%{transform:rotate(-180deg) translateX(12px)}75%{transform:rotate(-180deg) translateX(12px)}100%{transform:rotate(-360deg) translateX(12px)}} |
|
||||||
</style> |
|
||||||
</head> |
|
||||||
<body> |
|
||||||
<div id="app"> |
|
||||||
<div class="sampleContainer"> |
|
||||||
<div class="loader"> |
|
||||||
<span class="dot dot_1"></span> |
|
||||||
<span class="dot dot_2"></span> |
|
||||||
<span class="dot dot_3"></span> |
|
||||||
<span class="dot dot_4"></span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</body> |
|
||||||
</html> |
|
@ -0,0 +1,24 @@ |
|||||||
|
module.exports = { |
||||||
|
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], |
||||||
|
transform: { |
||||||
|
'^.+\\.vue$': 'vue-jest', |
||||||
|
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': |
||||||
|
'jest-transform-stub', |
||||||
|
'^.+\\.jsx?$': 'babel-jest' |
||||||
|
}, |
||||||
|
moduleNameMapper: { |
||||||
|
'^@/(.*)$': '<rootDir>/src/$1' |
||||||
|
}, |
||||||
|
snapshotSerializers: ['jest-serializer-vue'], |
||||||
|
testMatch: [ |
||||||
|
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' |
||||||
|
], |
||||||
|
collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], |
||||||
|
coverageDirectory: '<rootDir>/tests/unit/coverage', |
||||||
|
// 'collectCoverage': true,
|
||||||
|
'coverageReporters': [ |
||||||
|
'lcov', |
||||||
|
'text-summary' |
||||||
|
], |
||||||
|
testURL: 'http://localhost/' |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
const viewGenerator = require('./plop-templates/view/prompt') |
||||||
|
const componentGenerator = require('./plop-templates/component/prompt') |
||||||
|
|
||||||
|
module.exports = function(plop) { |
||||||
|
plop.setGenerator('view', viewGenerator) |
||||||
|
plop.setGenerator('component', componentGenerator) |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
module.exports = { |
||||||
|
plugins: { |
||||||
|
autoprefixer: {} |
||||||
|
} |
||||||
|
} |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,15 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||||
|
<meta name="renderer" content="webkit"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
||||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
||||||
|
<title><%= webpackConfig.name %></title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="app"></div> |
||||||
|
<!-- built files will be auto injected --> |
||||||
|
</body> |
||||||
|
</html> |
@ -1,9 +1,17 @@ |
|||||||
import request from '@/utils/request' |
import request from '@/utils/request' |
||||||
|
import qs from 'qs' |
||||||
|
|
||||||
export function initData(url, params) { |
export function initData(url, params) { |
||||||
return request({ |
return request({ |
||||||
url: url, |
url: url + '?' + qs.stringify(params, { indices: false }), |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function download(url, params) { |
||||||
|
return request({ |
||||||
|
url: url + '?' + qs.stringify(params, { indices: false }), |
||||||
method: 'get', |
method: 'get', |
||||||
params |
responseType: 'blob' |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
@ -1,9 +0,0 @@ |
|||||||
import request from '@/utils/request' |
|
||||||
|
|
||||||
export function generator(data, tableName) { |
|
||||||
return request({ |
|
||||||
url: 'api/generator?tableName=' + tableName, |
|
||||||
data, |
|
||||||
method: 'post' |
|
||||||
}) |
|
||||||
} |
|
@ -1,8 +1,8 @@ |
|||||||
import request from '@/utils/request' |
import request from '@/utils/request' |
||||||
|
|
||||||
export function get() { |
export function get(tableName) { |
||||||
return request({ |
return request({ |
||||||
url: 'api/genConfig', |
url: 'api/genConfig/' + tableName, |
||||||
method: 'get' |
method: 'get' |
||||||
}) |
}) |
||||||
} |
} |
@ -0,0 +1,33 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function getAllTable() { |
||||||
|
return request({ |
||||||
|
url: 'api/generator/tables/all', |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function generator(tableName, type) { |
||||||
|
return request({ |
||||||
|
url: 'api/generator/' + tableName + '/' + type, |
||||||
|
method: 'post', |
||||||
|
responseType: type === 2 ? 'blob' : '' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function save(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/generator', |
||||||
|
data, |
||||||
|
method: 'put' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function sync(tables) { |
||||||
|
return request({ |
||||||
|
url: 'api/generator/sync', |
||||||
|
method: 'post', |
||||||
|
data: tables |
||||||
|
}) |
||||||
|
} |
||||||
|
|
@ -1,8 +0,0 @@ |
|||||||
import request from '@/utils/request' |
|
||||||
|
|
||||||
export function getErrDetail(id) { |
|
||||||
return request({ |
|
||||||
url: 'api/logs/error/' + id, |
|
||||||
method: 'get' |
|
||||||
}) |
|
||||||
} |
|
@ -0,0 +1,17 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function testDbConnect(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/database/testConnect', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function testServerConnect(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/serverDeploy/testConnect', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function add(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/database', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/database', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function edit(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/database', |
||||||
|
method: 'put', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function testDbConnection(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/database/testConnect', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { add, edit, del, testDbConnection } |
@ -0,0 +1,77 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function add(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function edit(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy', |
||||||
|
method: 'put', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function getApps() { |
||||||
|
return request({ |
||||||
|
url: 'api/app', |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function getServers() { |
||||||
|
return request({ |
||||||
|
url: 'api/serverDeploy', |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 启动服务 |
||||||
|
* @param data 选中行 |
||||||
|
*/ |
||||||
|
export function startServer(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy/startServer', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 停止服务 |
||||||
|
* @param data 选中行 |
||||||
|
*/ |
||||||
|
export function stopServer(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy/stopServer', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 停止服务 |
||||||
|
* @param data 选中行 |
||||||
|
*/ |
||||||
|
export function serverStatus(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy/serverStatus', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { add, edit, del, stopServer, serverStatus, startServer, getServers, getApps } |
@ -0,0 +1,21 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/deployHistory', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 版本回退 |
||||||
|
* @param data 选中行 |
||||||
|
*/ |
||||||
|
export function reducte(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/deploy/serverReduction', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function add(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/serverDeploy', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/serverDeploy', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function edit(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/serverDeploy', |
||||||
|
method: 'put', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { add, edit, del } |
@ -0,0 +1,22 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function getErrDetail(id) { |
||||||
|
return request({ |
||||||
|
url: 'api/logs/error/' + id, |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function delAllError() { |
||||||
|
return request({ |
||||||
|
url: 'api/logs/del/error', |
||||||
|
method: 'delete' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function delAllInfo() { |
||||||
|
return request({ |
||||||
|
url: 'api/logs/del/info', |
||||||
|
method: 'delete' |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function del(keys) { |
||||||
|
return request({ |
||||||
|
url: 'auth/online', |
||||||
|
method: 'delete', |
||||||
|
data: keys |
||||||
|
}) |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function add(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/server', |
||||||
|
method: 'post', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/server', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function edit(data) { |
||||||
|
return request({ |
||||||
|
url: 'api/server', |
||||||
|
method: 'put', |
||||||
|
data |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { add, edit, del } |
@ -0,0 +1,22 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function count() { |
||||||
|
return request({ |
||||||
|
url: 'api/visits', |
||||||
|
method: 'post' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function get() { |
||||||
|
return request({ |
||||||
|
url: 'api/visits', |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function getChartData() { |
||||||
|
return request({ |
||||||
|
url: 'api/visits/chartData', |
||||||
|
method: 'get' |
||||||
|
}) |
||||||
|
} |
@ -1,16 +0,0 @@ |
|||||||
import request from '@/utils/request' |
|
||||||
|
|
||||||
export function del(id) { |
|
||||||
return request({ |
|
||||||
url: 'api/pictures/' + id, |
|
||||||
method: 'delete' |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
export function delAll(ids) { |
|
||||||
return request({ |
|
||||||
url: 'api/pictures/', |
|
||||||
method: 'delete', |
|
||||||
data: ids |
|
||||||
}) |
|
||||||
} |
|
@ -0,0 +1,18 @@ |
|||||||
|
import request from '@/utils/request' |
||||||
|
|
||||||
|
export function del(ids) { |
||||||
|
return request({ |
||||||
|
url: 'api/pictures', |
||||||
|
method: 'delete', |
||||||
|
data: ids |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export function sync() { |
||||||
|
return request({ |
||||||
|
url: 'api/pictures/synchronize', |
||||||
|
method: 'post' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
export default { del, sync } |
@ -1,24 +1,24 @@ |
|||||||
import request from '@/utils/request' |
import request from '@/utils/request' |
||||||
|
|
||||||
export function add(data) { |
export function add(data) { |
||||||
return request({ |
return request({ |
||||||
url: 'api/yxStoreSeckill', |
url: 'api/yxStoreSeckill', |
||||||
method: 'post', |
method: 'post', |
||||||
data |
data |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
|
||||||
export function del(id) { |
export function del(id) { |
||||||
return request({ |
return request({ |
||||||
url: 'api/yxStoreSeckill/' + id, |
url: 'api/yxStoreSeckill/' + id, |
||||||
method: 'delete' |
method: 'delete' |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
|
||||||
export function edit(data) { |
export function edit(data) { |
||||||
return request({ |
return request({ |
||||||
url: 'api/yxStoreSeckill', |
url: 'api/yxStoreSeckill', |
||||||
method: 'put', |
method: 'put', |
||||||
data |
data |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
Before Width: | Height: | Size: 4.0 KiB |
@ -1,9 +1,9 @@ |
|||||||
import Vue from 'vue' |
import Vue from 'vue' |
||||||
import SvgIcon from '@/components/SvgIcon' // svg组件
|
import SvgIcon from '@/components/SvgIcon'// svg component
|
||||||
|
|
||||||
// register globally
|
// register globally
|
||||||
Vue.component('svg-icon', SvgIcon) |
Vue.component('svg-icon', SvgIcon) |
||||||
|
|
||||||
const requireAll = requireContext => requireContext.keys().map(requireContext) |
|
||||||
const req = require.context('./svg', false, /\.svg$/) |
const req = require.context('./svg', false, /\.svg$/) |
||||||
|
const requireAll = requireContext => requireContext.keys().map(requireContext) |
||||||
requireAll(req) |
requireAll(req) |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 757 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 732 B After Width: | Height: | Size: 732 B |