{{title}}
-{{subTitle}}
- -
-
-## 功能
-
-* 首屏加载等待动画 避免首次加载白屏尴尬
-* 简约主题
-* 每个插件和组件都配有介绍文档
-* 图片资源 sketch 源文件( 可以在这个文件内重新生成所有图片资源 )
-* 登陆和注销
-* 根据路由自动生成菜单
-* 可折叠侧边栏
-* 方便的菜单设置
-* 多国语言支持
-* 富文本编辑器
-* Markdown 编辑器
-* 全屏功能
-* Fontawesome 图标库
-* 图标选择器(组件)
-* 自动引入下载的 SVG 图标
-* 前端假数据支持( mock )
-* 集成蚂蚁金服出品的 G2 图表
-* 图表自适应可拖拽大小的卡片容器(示例)
-* 简化剪贴板操作
-* 简化Cookie操作
-* 时间日期计算工具
-* 导入 Excel ( xlsx 格式 + csv 格式 )
-* 数据导出 Excel ( xlsx 格式 + csv 格式 )
-* 数据导出文本
-* 数字动画
-* 可拖拽调整大小的切分布局
-* 可拖拽调整大小和位置的网格布局
-* 提供三种方便的页面容器组件(正常卡片,隐形容器,填满页面)
-* 代码高亮显示
-* 加载并解析(或者直接指定资源) markdown 文件
-* GitHub 样式的 markdown 显示组件
-* markdown 内代码高亮
-* 为 markdown 扩展了百度云链接解析和优化显示
-* 右键菜单组件
-* 自定义滚动条和滚动控制
-* 内置5种主题
-* 公用样式抽离,方便的主题定制
-* 支持百万级数据量的表格组件
-* 打包后随意目录部署(已经做好兼容设置)
-* 支持临时菜单配置
-* 提供“试验台”功能 方便展示系统功能调用方法 `1.1.4 +`
-* 多标签页模式 `1.1.4 +`
-* 美化滚动条 `1.1.4 +`
-* 持久化存储 `1.1.4 +`
-
-## 加入小组
-
-D2Admin 是完全开源免费的管理系统集成方案,由 [FairyEver](https://github.com/FairyEver) 在工作之余完全由兴趣驱动完成,如果你也一样喜欢前端开发,欢迎加入我们的讨论/学习群,群内可以`提问答疑`,`分享学习资料`或者随便扯淡
-
-
-
-## 获取代码
-
-有两种方式可以获得 D2Admin 的代码
-
-* 在 [releases](https://github.com/d2-projects/d2-admin/releases) 页面下载最新的发行版。发行版一般是完成了某个大升级或者修复重要 bug 后发布的压缩包,你可以下载下来直接使用
-
-* Fork 仓库到你的 github 然后克隆到本地,然后使用 master 分支继续你的开发。这种方式得到的是最新的代码,但是会有未完成的新功能。**不建议使用这种方式**
-
-* 由于 github 访问较慢,推荐前往码云仓库下载 [gitee.com/fairyever/d2-admin](https://gitee.com/fairyever/d2-admin),码云上的仓库**在每次发布版本才会更新**,所以如果你选择此方法,请直接 fork 仓库并克隆到本地
-
-> 码云的仓库由 github 同步,但是发行版和标签同步有一些问题,所以推荐直接 fork 仓库
-
-## 觉得不错 赏个咖啡 让作者打起精神 ~
-
-
-
-
-更多介绍和使用方法见 [文档](http://d2admin.fairyever.com/zh/)
-
-## 朋友的开源项目
-
-* [avue](https://github.com/nmxiaowei/avue)
-
-
\ No newline at end of file
diff --git a/build/build.js b/build/build.js
deleted file mode 100755
index 193ed055..00000000
--- a/build/build.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict'
-// 检查依赖版本
-require('./check-versions')()
-
-// 设置 NODE_ENV
-process.env.NODE_ENV = 'production'
-
-// loading模块 https://www.npmjs.com/package/ora
-const ora = require('ora')
-// 删除模块 https://www.npmjs.com/package/rimraf
-const rm = require('rimraf')
-// path
-const path = require('path')
-// 输出彩色的文字 https://www.npmjs.com/package/chalk
-const chalk = require('chalk')
-// webpack
-const webpack = require('webpack')
-// 设置 这个文件里只用到了 config.build
-const config = require('../config')
-// webpack 生产环境的核心配置文件
-const webpackConfig = require('./webpack.prod.conf')
-
-// 定义一个 loading 并开始
-const spinner = ora('building for production...')
-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, // if you are using ts-loader, setting this to true will make tyescript errors show up during build
- 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'
- ))
- })
-})
diff --git a/build/check-versions.js b/build/check-versions.js
deleted file mode 100755
index 3ef972a0..00000000
--- a/build/check-versions.js
+++ /dev/null
@@ -1,54 +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:'))
- console.log()
-
- for (let i = 0; i < warnings.length; i++) {
- const warning = warnings[i]
- console.log(' ' + warning)
- }
-
- console.log()
- process.exit(1)
- }
-}
diff --git a/build/utils.js b/build/utils.js
deleted file mode 100755
index e534fb0f..00000000
--- a/build/utils.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict'
-const path = require('path')
-const config = require('../config')
-const ExtractTextPlugin = require('extract-text-webpack-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 = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
-
- if (loader) {
- loaders.push({
- loader: loader + '-loader',
- options: Object.assign({}, loaderOptions, {
- sourceMap: options.sourceMap
- })
- })
- }
-
- // Extract CSS when that option is specified
- // (which is the case during production build)
- if (options.extract) {
- return ExtractTextPlugin.extract({
- use: loaders,
- fallback: 'vue-style-loader'
- })
- } else {
- return ['vue-style-loader'].concat(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')
- })
- }
-}
diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js
deleted file mode 100755
index 0f0ddbc6..00000000
--- a/build/vue-loader.conf.js
+++ /dev/null
@@ -1,25 +0,0 @@
-'use strict'
-const utils = require('./utils')
-const config = require('../config')
-const isProduction = process.env.NODE_ENV === 'production'
-const sourceMapEnabled = isProduction
- ? config.build.productionSourceMap
- : config.dev.cssSourceMap
-
-module.exports = {
- loaders: {
- ...utils.cssLoaders({
- sourceMap: sourceMapEnabled,
- extract: isProduction
- }),
- i18n: '@kazupon/vue-i18n-loader'
- },
- cssSourceMap: sourceMapEnabled,
- cacheBusting: config.dev.cacheBusting,
- transformToRequire: {
- video: ['src', 'poster'],
- source: 'src',
- img: 'src',
- image: 'xlink:href'
- }
-}
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
deleted file mode 100755
index 24889520..00000000
--- a/build/webpack.base.conf.js
+++ /dev/null
@@ -1,114 +0,0 @@
-'use strict'
-const path = require('path')
-const utils = require('./utils')
-const webpack = require('webpack')
-const config = require('../config')
-const vueLoaderConfig = require('./vue-loader.conf')
-
-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 = {
- context: path.resolve(__dirname, '../'),
- entry: {
- app: ['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: {
- extensions: ['.js', '.vue', '.json'],
- alias: {
- 'vue$': 'vue/dist/vue.esm.js',
- '@': resolve('src'),
- }
- },
- module: {
- rules: [
- ...(config.dev.useEslint ? [createLintingRule()] : []),
- {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: vueLoaderConfig
- },
- {
- test: /\.js$/,
- loader: 'babel-loader',
- include: [resolve('src'), resolve('test')]
- },
- {
- test: /\.svg$/,
- loader: 'svg-sprite-loader',
- include: [resolve('src/assets/icons/svg')],
- options: {
- symbolId: 'd2-[name]'
- }
- },
- {
- test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
- loader: 'url-loader',
- exclude: [resolve('src/assets/icons/svg')],
- 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: /\.scss$/,
- loaders: ["style", "css", "sass"]
- },
- {
- test: /\.less$/,
- loaders: ["style", "css", "less"]
- },
- {
- test: /\.md$/,
- loaders: ["text-loader"]
- },
- {
- test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
- loader: 'url-loader',
- options: {
- limit: 10000,
- name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
- }
- }
- ]
- },
- 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'
- }
-}
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
deleted file mode 100755
index 03e94282..00000000
--- a/build/webpack.dev.conf.js
+++ /dev/null
@@ -1,80 +0,0 @@
-'use strict'
-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')
-
-const HOST = process.env.HOST
-const PORT = process.env.PORT && Number(process.env.PORT)
-
-const devWebpackConfig = merge(baseWebpackConfig, {
- 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(),
- new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
- new webpack.NoEmitOnErrorsPlugin(),
- // https://github.com/ampedandwired/html-webpack-plugin
- new HtmlWebpackPlugin({
- filename: 'index.html',
- template: 'index.html',
- inject: true
- }),
- ]
-})
-
-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)
- }
- })
-})
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
deleted file mode 100755
index 5b53b9a0..00000000
--- a/build/webpack.prod.conf.js
+++ /dev/null
@@ -1,145 +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 ExtractTextPlugin = require('extract-text-webpack-plugin')
-const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
-const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
-
-const env = require('../config/prod.env')
-
-const webpackConfig = merge(baseWebpackConfig, {
- 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].js'),
- chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
- },
- plugins: [
- // http://vuejs.github.io/vue-loader/en/workflow/production.html
- new webpack.DefinePlugin({
- 'process.env': env
- }),
- new UglifyJsPlugin({
- uglifyOptions: {
- compress: {
- warnings: false
- }
- },
- sourceMap: config.build.productionSourceMap,
- parallel: true
- }),
- // extract css into its own file
- new ExtractTextPlugin({
- filename: utils.assetsPath('css/[name].[contenthash].css'),
- // Setting the following option to `false` will not extract CSS from codesplit chunks.
- // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
- // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
- // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
- allChunks: true,
- }),
- // Compress extracted CSS. We are using this plugin so that possible
- // duplicated CSS from different components can be deduped.
- new OptimizeCSSPlugin({
- cssProcessorOptions: config.build.productionSourceMap
- ? { safe: true, map: { inline: false } }
- : { safe: true }
- }),
- // 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,
- minify: {
- removeComments: true,
- collapseWhitespace: true,
- removeAttributeQuotes: true
- // more options:
- // https://github.com/kangax/html-minifier#options-quick-reference
- },
- // necessary to consistently work with multiple chunks via CommonsChunkPlugin
- chunksSortMode: 'dependency'
- }),
- // keep module.id stable when vender modules does not change
- new webpack.HashedModuleIdsPlugin(),
- // enable scope hoisting
- new webpack.optimize.ModuleConcatenationPlugin(),
- // split vendor js into its own file
- new webpack.optimize.CommonsChunkPlugin({
- name: 'vendor',
- minChunks (module) {
- // any required modules inside node_modules are extracted to vendor
- return (
- module.resource &&
- /\.js$/.test(module.resource) &&
- module.resource.indexOf(
- path.join(__dirname, '../node_modules')
- ) === 0
- )
- }
- }),
- // extract webpack runtime and module manifest to its own file in order to
- // prevent vendor hash from being updated whenever app bundle is updated
- new webpack.optimize.CommonsChunkPlugin({
- name: 'manifest',
- minChunks: Infinity
- }),
- // This instance extracts shared chunks from code splitted chunks and bundles them
- // in a separate chunk, similar to the vendor chunk
- // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
- new webpack.optimize.CommonsChunkPlugin({
- name: 'app',
- async: 'vendor-async',
- children: true,
- minChunks: 3
- }),
-
- // copy custom static assets
- new CopyWebpackPlugin([
- {
- from: path.resolve(__dirname, '../static'),
- to: config.build.assetsSubDirectory,
- ignore: ['.*']
- }
- ])
- ]
-})
-
-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.bundleAnalyzerReport) {
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
- webpackConfig.plugins.push(new BundleAnalyzerPlugin())
-}
-
-module.exports = webpackConfig
diff --git a/config/dev.env.js b/config/dev.env.js
deleted file mode 100755
index 1e22973a..00000000
--- a/config/dev.env.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict'
-const merge = require('webpack-merge')
-const prodEnv = require('./prod.env')
-
-module.exports = merge(prodEnv, {
- NODE_ENV: '"development"'
-})
diff --git a/config/index.js b/config/index.js
deleted file mode 100755
index 4bad2e0f..00000000
--- a/config/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict'
-// Template version: 1.2.7
-// see http://vuejs-templates.github.io/webpack for documentation.
-
-const path = require('path')
-
-module.exports = {
- dev: {
-
- // Paths
- assetsSubDirectory: 'static',
- assetsPublicPath: '/',
- proxyTable: {},
-
- // Various Dev Server settings
- host: 'localhost', // can be overwritten by process.env.HOST
- port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
- autoOpenBrowser: true,
- errorOverlay: true,
- notifyOnErrors: true,
- 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: 'eval-source-map',
-
- // If you have problems debugging vue-files in devtools,
- // set this to false - it *may* help
- // https://vue-loader.vuejs.org/en/options.html#cachebusting
- cacheBusting: true,
-
- // 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',
- // 请根据你的站点地址修改这里
- assetsPublicPath: '/d2-admin-preview/',
-
- /**
- * Source Maps
- */
-
- productionSourceMap: true,
- // 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
- }
-}
diff --git a/config/prod.env.js b/config/prod.env.js
deleted file mode 100755
index a6f99761..00000000
--- a/config/prod.env.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict'
-module.exports = {
- NODE_ENV: '"production"'
-}
diff --git a/deploy/doc.sh b/deploy/doc.sh
deleted file mode 100755
index bf28e118..00000000
--- a/deploy/doc.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env sh
-
-# 确保脚本抛出遇到的错误
-set -e
-
-# 生成静态文件
-npm run doc:build
-
-# 进入生成的文件夹
-cd docs/.vuepress/dist
-
-git init
-git add -A
-git commit -m 'deploy'
-
-# 如果发布到 https://{{$t('check.title')}}
-
- 当前版本: ${packJson.version}
-${dayjs(res.created_at).format('YYYY年M月D日')}更新 版本号: ${res.tag_name}
-此信息只在开发环境提示
-- - - 详细信息 - -
- `.trim() - }) - }) - } - vm.$store.commit('d2adminUpdateSet', update) - vm.$store.commit('d2adminReleasesSet', res) - }) - .catch(err => { - console.log('checkUpdate error', err) - }) -} - -export default util diff --git a/src/main.js b/src/main.js deleted file mode 100755 index 7579b2e5..00000000 --- a/src/main.js +++ /dev/null @@ -1,146 +0,0 @@ -// polyfill -import 'babel-polyfill' - -// Vue -import Vue from 'vue' -import App from './App' - -// 多国语 -import i18n from './i18n' - -// 工具 -import util from '@/libs/util' - -// vuex -import store from '@/store/index' - -// 路由 -import router from './router' -// 框架内的路由 -import { frameInRoutes } from '@/router/routes' - -// ElementUI -import ElementUI from 'element-ui' -import 'element-ui/lib/theme-chalk/index.css' - -// v-charts -import VCharts from 'v-charts' - -// font-awesome -import '@/assets/library/font-awesome-4.7.0/css/font-awesome.min.css' - -// simplemde css -import 'simplemde/dist/simplemde.min.css' - -// svg图标 -import '@/assets/icons/index' - -// markdown主题 -import 'github-markdown-css' - -// 全屏控制 -import screenfull from 'screenfull' - -// 代码高亮主题 -import '@/assets/library/highlight/styles/atom-one-light.css' - -// 全局注册的组件 -import '@/components' - -// 异步请求库 -import '@/plugin/axios' - -// mock接口设置 -import '@/mock/register' - -// 右键菜单 -import contentmenu from 'v-contextmenu' -import 'v-contextmenu/dist/index.css' - -// 插件 导出文件 -import pluginImport from '@/plugin/import' -// 插件 导出文件 -import pluginExport from '@/plugin/export' -// 插件 log简化 -import pluginLog from '@/plugin/log' -// 插件 打开页面 -import pluginOpen from '@/plugin/open' -// 插件 支持百万级数据的表格 -import bigdataTable from '@/plugin/vue-bigdata-table' -// 插件 json 展示 -import vueJsonTreeView from 'vue-json-tree-view' - -// 打包的设置 用户获取路径 -import buildConfig from '../config/index' - -Vue.use(ElementUI) -Vue.use(VCharts) -Vue.use(contentmenu) - -Vue.use(pluginImport) -Vue.use(pluginExport) -Vue.use(pluginLog) -Vue.use(pluginOpen) -Vue.use(bigdataTable) -Vue.use(vueJsonTreeView) - -Vue.config.productionTip = false - -Vue.prototype.$env = process.env.NODE_ENV - -Vue.prototype.$assetsPublicPath = process.env.NODE_ENV === 'development' ? buildConfig.dev.assetsPublicPath : buildConfig.build.assetsPublicPath - -/* eslint-disable no-new */ -new Vue({ - el: '#app', - store, - i18n, - router, - template: '更新日期 {{dayjs(releases.created_at).format('YYYY年M月D日')}}
- {{releases.html_url}} -只设置目标数字
-设置起止数值
-小数位数
-动画时长
-回调函数
-结束一秒后更新数值
-{{text}}
- Hello
javascript
-css
-scss
-html
-一般用法
-- - 选择的图标 {{icon}} - - - 未选择 -
-用户可以输入
-- - 选择的图标 {{icon2}} - - - 未选择 -
-{{name}}
-{{sass}}
-{{color}}
-如果你愿意,你还可以随意使用 SVG 图标
-和畅惠风
-和畅惠风
-和畅惠风
-RGag
-RGag
-RGag
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-D2Admin 的构建依托于由饿了么出品的 ElementUI,欲了解更多该组件的信息请查阅以下链接
-你可以尝试返回发送数据页面修改数据重新发送,或者切换到其它页面后刷新浏览器再返回本业观察参数保留
-在下面的输入框输入任意字符后,切换到其它页面,再回到此页时输入框文字消失,证明没有被缓存
-在下面的输入框输入任意字符后,切换到其它页面,再回到此页时输入框文字保留,证明被缓存
-尝试激活一个不存在的主题(主题不存在
滚动时间 ms
-当前是{{$env === 'development' ? '开发' : '生产'}}环境
-{{$t('subtitle')}}
-{{$t('vue')}}
-{{$t('check.title')}}
-基本读写删
-设置有效期
-获取所有可以获得的数据
-|
- |
-
-
- {{ typeof td === 'object' ? td.value : td }}
-
- |
-
|
- |
-
-
- {{ typeof td === 'object' ? td.value : td }}
-
- |
-
|
- {{ col.title }} |
-
|---|
|
- {{ col.title }} |
-
|---|