expressa 2.0.14 → 2.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +21 -21
- package/.eslintrc.json +29 -29
- package/LICENSE +21 -21
- package/README.md +137 -137
- package/auth/index.js +76 -76
- package/auth/jwt.js +31 -31
- package/controllers/collections.js +258 -258
- package/controllers/install.js +105 -105
- package/controllers/status.js +43 -43
- package/controllers/users.js +52 -52
- package/cypress/fixtures/example.json +4 -4
- package/cypress/integration/0_install_spec.js +8 -8
- package/cypress/integration/custom_collections.js +28 -28
- package/cypress/integration/home.js +9 -9
- package/cypress/integration/settings.js +34 -34
- package/cypress/integration/users.js +61 -61
- package/cypress/plugins/index.js +17 -17
- package/cypress/support/commands.js +54 -54
- package/cypress/support/index.js +20 -20
- package/cypress/support/util.js +10 -10
- package/cypress.json +4 -4
- package/db/cached.js +40 -40
- package/db/file.js +112 -112
- package/db/memory.js +79 -79
- package/db/mongo.js +86 -86
- package/db/postgres.js +93 -93
- package/doc/authentication.md +38 -38
- package/doc/automatic-fields.md +12 -12
- package/doc/blogexample.md +16 -16
- package/doc/custom-endpoints.md +20 -20
- package/doc/database.md +23 -23
- package/doc/development.md +33 -33
- package/doc/listeners.md +103 -103
- package/doc/modules.md +8 -8
- package/doc/permissions.md +14 -14
- package/doc/relationships.md +65 -65
- package/doc/testing.md +47 -47
- package/doc/uploading-files.md +53 -53
- package/index.js +297 -297
- package/listeners.js +65 -65
- package/listeners_collection_permissions.js +29 -29
- package/listeners_users.js +96 -96
- package/listeners_validation.js +43 -43
- package/middleware/logging.js +30 -30
- package/middleware/permissions.js +41 -47
- package/modules/access_keys/access_keys.js +32 -32
- package/modules/admin/.babelrc +12 -12
- package/modules/admin/.editorconfig +14 -14
- package/modules/admin/.eslintignore +5 -5
- package/modules/admin/.eslintrc.js +197 -197
- package/modules/admin/.postcssrc.js +10 -10
- package/modules/admin/.travis.yml +5 -5
- package/modules/admin/LICENSE +21 -21
- package/modules/admin/README.md +88 -88
- package/modules/admin/build/build.js +45 -45
- package/modules/admin/build/check-versions.js +64 -64
- package/modules/admin/build/utils.js +108 -108
- package/modules/admin/build/vue-loader.conf.js +5 -5
- package/modules/admin/build/webpack.base.conf.js +108 -108
- package/modules/admin/build/webpack.dev.conf.js +95 -95
- package/modules/admin/build/webpack.prod.conf.js +171 -171
- package/modules/admin/config/dev.env.js +8 -8
- package/modules/admin/config/index.js +86 -86
- package/modules/admin/config/prod.env.js +5 -5
- package/modules/admin/index.html +16 -16
- package/modules/admin/package.json +98 -98
- package/modules/admin/src/App.vue +11 -11
- package/modules/admin/src/api/login.js +26 -26
- package/modules/admin/src/api/table.js +9 -9
- package/modules/admin/src/components/Breadcrumb/index.vue +79 -79
- package/modules/admin/src/components/Hamburger/index.vue +62 -62
- package/modules/admin/src/components/JSONEditor.vue +180 -180
- package/modules/admin/src/components/SvgIcon/index.vue +43 -43
- package/modules/admin/src/icons/index.js +9 -9
- package/modules/admin/src/icons/svgo.yml +22 -22
- package/modules/admin/src/permission.js +49 -49
- package/modules/admin/src/router/index.js +200 -200
- package/modules/admin/src/store/getters.js +11 -11
- package/modules/admin/src/store/index.js +17 -17
- package/modules/admin/src/store/modules/app.js +43 -43
- package/modules/admin/src/store/modules/user.js +104 -104
- package/modules/admin/src/styles/element-ui.scss +29 -29
- package/modules/admin/src/styles/index.scss +78 -78
- package/modules/admin/src/styles/mixin.scss +27 -27
- package/modules/admin/src/styles/sidebar.scss +133 -133
- package/modules/admin/src/styles/transition.scss +46 -46
- package/modules/admin/src/styles/variables.scss +4 -4
- package/modules/admin/src/utils/auth.js +15 -15
- package/modules/admin/src/utils/index.js +74 -74
- package/modules/admin/src/utils/request.js +48 -48
- package/modules/admin/src/utils/validate.js +31 -31
- package/modules/admin/src/views/404.vue +235 -235
- package/modules/admin/src/views/Dev.vue +33 -33
- package/modules/admin/src/views/EditDocument.vue +116 -116
- package/modules/admin/src/views/Endpoints.vue +279 -279
- package/modules/admin/src/views/Home.vue +84 -84
- package/modules/admin/src/views/Install.vue +79 -79
- package/modules/admin/src/views/ListDocuments.vue +72 -72
- package/modules/admin/src/views/ListDocuments2.vue +462 -462
- package/modules/admin/src/views/ManageListeners.vue +67 -67
- package/modules/admin/src/views/ManageMiddleware.vue +43 -43
- package/modules/admin/src/views/ManagePermissions.vue +75 -75
- package/modules/admin/src/views/ViewRequest.vue +77 -77
- package/modules/admin/src/views/form/index.vue +91 -91
- package/modules/admin/src/views/layout/Layout.vue +69 -69
- package/modules/admin/src/views/layout/components/AppMain.vue +41 -41
- package/modules/admin/src/views/layout/components/Navbar.vue +97 -97
- package/modules/admin/src/views/layout/components/Sidebar/Item.vue +29 -29
- package/modules/admin/src/views/layout/components/Sidebar/Link.vue +39 -39
- package/modules/admin/src/views/layout/components/Sidebar/SidebarItem.vue +103 -103
- package/modules/admin/src/views/layout/components/Sidebar/index.vue +62 -62
- package/modules/admin/src/views/layout/components/index.js +3 -3
- package/modules/admin/src/views/layout/mixin/ResizeHandler.js +41 -41
- package/modules/admin/src/views/login/index.vue +195 -195
- package/modules/admin/src/views/tree/index.vue +77 -77
- package/modules/collections/collections.js +39 -39
- package/modules/core/core.js +197 -197
- package/modules/logging/logging.js +88 -88
- package/modules/permissions/permissions.js +106 -106
- package/package.json +59 -59
- package/scripts/expressa +12 -12
- package/scripts/run_cypress_tests.sh +5 -5
- package/scripts/run_db_tests.sh +8 -8
- package/test/0-install.js +96 -96
- package/test/collections.js +431 -423
- package/test/collections.querying.js +289 -269
- package/test/db.js +258 -250
- package/test/db.strings.js +73 -73
- package/test/db.updating.js +144 -144
- package/test/logging.js +29 -29
- package/test/test.js +94 -94
- package/test/testserver.js +17 -17
- package/test/testutils.js +136 -136
- package/test/users.js +425 -425
- package/util.js +522 -504
- package/modules/admin/dist/favicon.ico +0 -0
- package/modules/admin/dist/index.html +0 -1
- package/modules/admin/dist/index.html.gz +0 -0
- package/modules/admin/dist/static/css/app.9dd57eea.css +0 -1
- package/modules/admin/dist/static/css/app.9dd57eea.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css +0 -1
- package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css +0 -1
- package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-621e.b826be8d.css +0 -1
- package/modules/admin/dist/static/css/chunk-621e.b826be8d.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-656b.9c828b00.css +0 -1
- package/modules/admin/dist/static/css/chunk-656b.9c828b00.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-7291.13514e45.css +0 -0
- package/modules/admin/dist/static/css/chunk-7291.13514e45.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css +0 -1
- package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css +0 -1
- package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-b423.5f239333.css +0 -0
- package/modules/admin/dist/static/css/chunk-b423.5f239333.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css +0 -1
- package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-e374.025d58bb.css +0 -1
- package/modules/admin/dist/static/css/chunk-e374.025d58bb.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css +0 -1
- package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css +0 -1
- package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-libs.327ad89e.css +0 -14
- package/modules/admin/dist/static/css/chunk-libs.327ad89e.css.gz +0 -0
- package/modules/admin/dist/static/fonts/element-icons.6f0a763.ttf +0 -0
- package/modules/admin/dist/static/img/404.a57b6f3.png +0 -0
- package/modules/admin/dist/static/js/app.e9461593.js +0 -1
- package/modules/admin/dist/static/js/app.e9461593.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js +0 -2
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt +0 -13
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt.gz +0 -0
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js +0 -1
- package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-5b97.ac360086.js +0 -1
- package/modules/admin/dist/static/js/chunk-5b97.ac360086.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js +0 -1
- package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-621e.ccf42393.js +0 -1
- package/modules/admin/dist/static/js/chunk-621e.ccf42393.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js +0 -1
- package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-7291.590524e9.js +0 -1
- package/modules/admin/dist/static/js/chunk-7291.590524e9.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js +0 -1
- package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js +0 -1
- package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-b423.387c504c.js +0 -1
- package/modules/admin/dist/static/js/chunk-b423.387c504c.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js +0 -1
- package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js +0 -1
- package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js +0 -1
- package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js +0 -1
- package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-f075.315ceec1.js +0 -1
- package/modules/admin/dist/static/js/chunk-f075.315ceec1.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-libs.06c38828.js +0 -2
- package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt +0 -126
- package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt.gz +0 -0
- package/modules/admin/dist/static/js/chunk-libs.06c38828.js.gz +0 -0
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
const path = require('path')
|
|
3
|
-
const utils = require('./utils')
|
|
4
|
-
const webpack = require('webpack')
|
|
5
|
-
const config = require('../config')
|
|
6
|
-
const merge = require('webpack-merge')
|
|
7
|
-
const baseWebpackConfig = require('./webpack.base.conf')
|
|
8
|
-
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
|
9
|
-
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
|
10
|
-
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
|
|
11
|
-
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
12
|
-
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
|
13
|
-
const TerserPlugin = require('terser-webpack-plugin');
|
|
14
|
-
|
|
15
|
-
function resolve(dir) {
|
|
16
|
-
return path.join(__dirname, '..', dir)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const env = require('../config/prod.env')
|
|
20
|
-
|
|
21
|
-
// For NamedChunksPlugin
|
|
22
|
-
const seen = new Set()
|
|
23
|
-
const nameLength = 4
|
|
24
|
-
|
|
25
|
-
const webpackConfig = merge(baseWebpackConfig, {
|
|
26
|
-
mode: 'production',
|
|
27
|
-
module: {
|
|
28
|
-
rules: utils.styleLoaders({
|
|
29
|
-
sourceMap: config.build.productionSourceMap,
|
|
30
|
-
extract: true,
|
|
31
|
-
usePostCSS: true
|
|
32
|
-
})
|
|
33
|
-
},
|
|
34
|
-
devtool: config.build.productionSourceMap ? config.build.devtool : false,
|
|
35
|
-
output: {
|
|
36
|
-
path: config.build.assetsRoot,
|
|
37
|
-
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
|
|
38
|
-
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
|
|
39
|
-
},
|
|
40
|
-
plugins: [
|
|
41
|
-
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
|
42
|
-
new webpack.DefinePlugin({
|
|
43
|
-
'process.env': env
|
|
44
|
-
}),
|
|
45
|
-
// extract css into its own file
|
|
46
|
-
new MiniCssExtractPlugin({
|
|
47
|
-
filename: utils.assetsPath('css/[name].[contenthash:8].css'),
|
|
48
|
-
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
|
|
49
|
-
}),
|
|
50
|
-
// generate dist index.html with correct asset hash for caching.
|
|
51
|
-
// you can customize output by editing /index.html
|
|
52
|
-
// see https://github.com/ampedandwired/html-webpack-plugin
|
|
53
|
-
new HtmlWebpackPlugin({
|
|
54
|
-
filename: config.build.index,
|
|
55
|
-
template: 'index.html',
|
|
56
|
-
inject: true,
|
|
57
|
-
favicon: resolve('favicon.ico'),
|
|
58
|
-
title: 'vue-admin-template',
|
|
59
|
-
minify: {
|
|
60
|
-
removeComments: true,
|
|
61
|
-
collapseWhitespace: true,
|
|
62
|
-
removeAttributeQuotes: true
|
|
63
|
-
// more options:
|
|
64
|
-
// https://github.com/kangax/html-minifier#options-quick-reference
|
|
65
|
-
}
|
|
66
|
-
// default sort mode uses toposort which cannot handle cyclic deps
|
|
67
|
-
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
|
68
|
-
// matter anyway
|
|
69
|
-
}),
|
|
70
|
-
new ScriptExtHtmlWebpackPlugin({
|
|
71
|
-
//`runtime` must same as runtimeChunk name. default is `runtime`
|
|
72
|
-
inline: /runtime\..*\.js$/
|
|
73
|
-
}),
|
|
74
|
-
// keep chunk.id stable when chunk has no name
|
|
75
|
-
new webpack.NamedChunksPlugin(chunk => {
|
|
76
|
-
if (chunk.name) {
|
|
77
|
-
return chunk.name
|
|
78
|
-
}
|
|
79
|
-
const modules = Array.from(chunk.modulesIterable)
|
|
80
|
-
if (modules.length > 1) {
|
|
81
|
-
const hash = require('hash-sum')
|
|
82
|
-
const joinedHash = hash(modules.map(m => m.id).join('_'))
|
|
83
|
-
let len = nameLength
|
|
84
|
-
while (seen.has(joinedHash.substr(0, len))) len++
|
|
85
|
-
seen.add(joinedHash.substr(0, len))
|
|
86
|
-
return `chunk-${joinedHash.substr(0, len)}`
|
|
87
|
-
} else {
|
|
88
|
-
return modules[0].id
|
|
89
|
-
}
|
|
90
|
-
}),
|
|
91
|
-
// keep module.id stable when vender modules does not change
|
|
92
|
-
new webpack.HashedModuleIdsPlugin(),
|
|
93
|
-
// copy custom static assets
|
|
94
|
-
new CopyWebpackPlugin([
|
|
95
|
-
{
|
|
96
|
-
from: path.resolve(__dirname, '../static'),
|
|
97
|
-
to: config.build.assetsSubDirectory,
|
|
98
|
-
ignore: ['.*']
|
|
99
|
-
}
|
|
100
|
-
])
|
|
101
|
-
],
|
|
102
|
-
optimization: {
|
|
103
|
-
splitChunks: {
|
|
104
|
-
chunks: 'all',
|
|
105
|
-
cacheGroups: {
|
|
106
|
-
libs: {
|
|
107
|
-
name: 'chunk-libs',
|
|
108
|
-
test: /[\\/]node_modules[\\/]/,
|
|
109
|
-
priority: 10,
|
|
110
|
-
chunks: 'initial' // 只打包初始时依赖的第三方
|
|
111
|
-
},
|
|
112
|
-
elementUI: {
|
|
113
|
-
name: 'chunk-elementUI', // 单独将 elementUI 拆包
|
|
114
|
-
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
|
|
115
|
-
test: /[\\/]node_modules[\\/]element-ui[\\/]/
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
runtimeChunk: 'single',
|
|
120
|
-
minimizer: [
|
|
121
|
-
new TerserPlugin(),
|
|
122
|
-
// Compress extracted CSS. We are using this plugin so that possible
|
|
123
|
-
// duplicated CSS from different components can be deduped.
|
|
124
|
-
new OptimizeCSSAssetsPlugin()
|
|
125
|
-
]
|
|
126
|
-
}
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
if (config.build.productionGzip) {
|
|
130
|
-
const CompressionWebpackPlugin = require('compression-webpack-plugin')
|
|
131
|
-
|
|
132
|
-
webpackConfig.plugins.push(
|
|
133
|
-
new CompressionWebpackPlugin({
|
|
134
|
-
filename: '[path][base].gz',
|
|
135
|
-
algorithm: 'gzip',
|
|
136
|
-
test: new RegExp(
|
|
137
|
-
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
|
|
138
|
-
),
|
|
139
|
-
compressionOptions: {
|
|
140
|
-
level: 9,
|
|
141
|
-
},
|
|
142
|
-
minRatio: Infinity,
|
|
143
|
-
})
|
|
144
|
-
)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
|
|
148
|
-
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
|
149
|
-
.BundleAnalyzerPlugin
|
|
150
|
-
|
|
151
|
-
if (config.build.bundleAnalyzerReport) {
|
|
152
|
-
webpackConfig.plugins.push(
|
|
153
|
-
new BundleAnalyzerPlugin({
|
|
154
|
-
analyzerPort: 8080,
|
|
155
|
-
generateStatsFile: false
|
|
156
|
-
})
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (config.build.generateAnalyzerReport) {
|
|
161
|
-
webpackConfig.plugins.push(
|
|
162
|
-
new BundleAnalyzerPlugin({
|
|
163
|
-
analyzerMode: 'static',
|
|
164
|
-
reportFilename: 'bundle-report.html',
|
|
165
|
-
openAnalyzer: false
|
|
166
|
-
})
|
|
167
|
-
)
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
module.exports = webpackConfig
|
|
1
|
+
'use strict'
|
|
2
|
+
const path = require('path')
|
|
3
|
+
const utils = require('./utils')
|
|
4
|
+
const webpack = require('webpack')
|
|
5
|
+
const config = require('../config')
|
|
6
|
+
const merge = require('webpack-merge')
|
|
7
|
+
const baseWebpackConfig = require('./webpack.base.conf')
|
|
8
|
+
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
|
9
|
+
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
|
10
|
+
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
|
|
11
|
+
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
12
|
+
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
|
13
|
+
const TerserPlugin = require('terser-webpack-plugin');
|
|
14
|
+
|
|
15
|
+
function resolve(dir) {
|
|
16
|
+
return path.join(__dirname, '..', dir)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const env = require('../config/prod.env')
|
|
20
|
+
|
|
21
|
+
// For NamedChunksPlugin
|
|
22
|
+
const seen = new Set()
|
|
23
|
+
const nameLength = 4
|
|
24
|
+
|
|
25
|
+
const webpackConfig = merge(baseWebpackConfig, {
|
|
26
|
+
mode: 'production',
|
|
27
|
+
module: {
|
|
28
|
+
rules: utils.styleLoaders({
|
|
29
|
+
sourceMap: config.build.productionSourceMap,
|
|
30
|
+
extract: true,
|
|
31
|
+
usePostCSS: true
|
|
32
|
+
})
|
|
33
|
+
},
|
|
34
|
+
devtool: config.build.productionSourceMap ? config.build.devtool : false,
|
|
35
|
+
output: {
|
|
36
|
+
path: config.build.assetsRoot,
|
|
37
|
+
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
|
|
38
|
+
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
|
|
39
|
+
},
|
|
40
|
+
plugins: [
|
|
41
|
+
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
|
42
|
+
new webpack.DefinePlugin({
|
|
43
|
+
'process.env': env
|
|
44
|
+
}),
|
|
45
|
+
// extract css into its own file
|
|
46
|
+
new MiniCssExtractPlugin({
|
|
47
|
+
filename: utils.assetsPath('css/[name].[contenthash:8].css'),
|
|
48
|
+
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
|
|
49
|
+
}),
|
|
50
|
+
// generate dist index.html with correct asset hash for caching.
|
|
51
|
+
// you can customize output by editing /index.html
|
|
52
|
+
// see https://github.com/ampedandwired/html-webpack-plugin
|
|
53
|
+
new HtmlWebpackPlugin({
|
|
54
|
+
filename: config.build.index,
|
|
55
|
+
template: 'index.html',
|
|
56
|
+
inject: true,
|
|
57
|
+
favicon: resolve('favicon.ico'),
|
|
58
|
+
title: 'vue-admin-template',
|
|
59
|
+
minify: {
|
|
60
|
+
removeComments: true,
|
|
61
|
+
collapseWhitespace: true,
|
|
62
|
+
removeAttributeQuotes: true
|
|
63
|
+
// more options:
|
|
64
|
+
// https://github.com/kangax/html-minifier#options-quick-reference
|
|
65
|
+
}
|
|
66
|
+
// default sort mode uses toposort which cannot handle cyclic deps
|
|
67
|
+
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
|
68
|
+
// matter anyway
|
|
69
|
+
}),
|
|
70
|
+
new ScriptExtHtmlWebpackPlugin({
|
|
71
|
+
//`runtime` must same as runtimeChunk name. default is `runtime`
|
|
72
|
+
inline: /runtime\..*\.js$/
|
|
73
|
+
}),
|
|
74
|
+
// keep chunk.id stable when chunk has no name
|
|
75
|
+
new webpack.NamedChunksPlugin(chunk => {
|
|
76
|
+
if (chunk.name) {
|
|
77
|
+
return chunk.name
|
|
78
|
+
}
|
|
79
|
+
const modules = Array.from(chunk.modulesIterable)
|
|
80
|
+
if (modules.length > 1) {
|
|
81
|
+
const hash = require('hash-sum')
|
|
82
|
+
const joinedHash = hash(modules.map(m => m.id).join('_'))
|
|
83
|
+
let len = nameLength
|
|
84
|
+
while (seen.has(joinedHash.substr(0, len))) len++
|
|
85
|
+
seen.add(joinedHash.substr(0, len))
|
|
86
|
+
return `chunk-${joinedHash.substr(0, len)}`
|
|
87
|
+
} else {
|
|
88
|
+
return modules[0].id
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
// keep module.id stable when vender modules does not change
|
|
92
|
+
new webpack.HashedModuleIdsPlugin(),
|
|
93
|
+
// copy custom static assets
|
|
94
|
+
new CopyWebpackPlugin([
|
|
95
|
+
{
|
|
96
|
+
from: path.resolve(__dirname, '../static'),
|
|
97
|
+
to: config.build.assetsSubDirectory,
|
|
98
|
+
ignore: ['.*']
|
|
99
|
+
}
|
|
100
|
+
])
|
|
101
|
+
],
|
|
102
|
+
optimization: {
|
|
103
|
+
splitChunks: {
|
|
104
|
+
chunks: 'all',
|
|
105
|
+
cacheGroups: {
|
|
106
|
+
libs: {
|
|
107
|
+
name: 'chunk-libs',
|
|
108
|
+
test: /[\\/]node_modules[\\/]/,
|
|
109
|
+
priority: 10,
|
|
110
|
+
chunks: 'initial' // 只打包初始时依赖的第三方
|
|
111
|
+
},
|
|
112
|
+
elementUI: {
|
|
113
|
+
name: 'chunk-elementUI', // 单独将 elementUI 拆包
|
|
114
|
+
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
|
|
115
|
+
test: /[\\/]node_modules[\\/]element-ui[\\/]/
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
runtimeChunk: 'single',
|
|
120
|
+
minimizer: [
|
|
121
|
+
new TerserPlugin(),
|
|
122
|
+
// Compress extracted CSS. We are using this plugin so that possible
|
|
123
|
+
// duplicated CSS from different components can be deduped.
|
|
124
|
+
new OptimizeCSSAssetsPlugin()
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
if (config.build.productionGzip) {
|
|
130
|
+
const CompressionWebpackPlugin = require('compression-webpack-plugin')
|
|
131
|
+
|
|
132
|
+
webpackConfig.plugins.push(
|
|
133
|
+
new CompressionWebpackPlugin({
|
|
134
|
+
filename: '[path][base].gz',
|
|
135
|
+
algorithm: 'gzip',
|
|
136
|
+
test: new RegExp(
|
|
137
|
+
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
|
|
138
|
+
),
|
|
139
|
+
compressionOptions: {
|
|
140
|
+
level: 9,
|
|
141
|
+
},
|
|
142
|
+
minRatio: Infinity,
|
|
143
|
+
})
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
|
|
148
|
+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
|
149
|
+
.BundleAnalyzerPlugin
|
|
150
|
+
|
|
151
|
+
if (config.build.bundleAnalyzerReport) {
|
|
152
|
+
webpackConfig.plugins.push(
|
|
153
|
+
new BundleAnalyzerPlugin({
|
|
154
|
+
analyzerPort: 8080,
|
|
155
|
+
generateStatsFile: false
|
|
156
|
+
})
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (config.build.generateAnalyzerReport) {
|
|
161
|
+
webpackConfig.plugins.push(
|
|
162
|
+
new BundleAnalyzerPlugin({
|
|
163
|
+
analyzerMode: 'static',
|
|
164
|
+
reportFilename: 'bundle-report.html',
|
|
165
|
+
openAnalyzer: false
|
|
166
|
+
})
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
module.exports = webpackConfig
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
const merge = require('webpack-merge')
|
|
3
|
-
const prodEnv = require('./prod.env')
|
|
4
|
-
|
|
5
|
-
module.exports = merge(prodEnv, {
|
|
6
|
-
NODE_ENV: '"development"',
|
|
7
|
-
BASE_API: '"http://localhost:3000/api"',
|
|
8
|
-
})
|
|
1
|
+
'use strict'
|
|
2
|
+
const merge = require('webpack-merge')
|
|
3
|
+
const prodEnv = require('./prod.env')
|
|
4
|
+
|
|
5
|
+
module.exports = merge(prodEnv, {
|
|
6
|
+
NODE_ENV: '"development"',
|
|
7
|
+
BASE_API: '"http://localhost:3000/api"',
|
|
8
|
+
})
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
// Template version: 1.2.6
|
|
3
|
-
// see http://vuejs-templates.github.io/webpack for documentation.
|
|
4
|
-
|
|
5
|
-
const path = require('path')
|
|
6
|
-
|
|
7
|
-
module.exports = {
|
|
8
|
-
dev: {
|
|
9
|
-
// Paths
|
|
10
|
-
assetsSubDirectory: 'static',
|
|
11
|
-
assetsPublicPath: '/',
|
|
12
|
-
proxyTable: {},
|
|
13
|
-
|
|
14
|
-
// Various Dev Server settings
|
|
15
|
-
host: 'localhost', // can be overwritten by process.env.HOST
|
|
16
|
-
port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
|
17
|
-
autoOpenBrowser: true,
|
|
18
|
-
errorOverlay: true,
|
|
19
|
-
notifyOnErrors: false,
|
|
20
|
-
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
|
|
21
|
-
|
|
22
|
-
// Use Eslint Loader?
|
|
23
|
-
// If true, your code will be linted during bundling and
|
|
24
|
-
// linting errors and warnings will be shown in the console.
|
|
25
|
-
useEslint: true,
|
|
26
|
-
// If true, eslint errors and warnings will also be shown in the error overlay
|
|
27
|
-
// in the browser.
|
|
28
|
-
showEslintErrorsInOverlay: false,
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Source Maps
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
// https://webpack.js.org/configuration/devtool/#development
|
|
35
|
-
devtool: 'cheap-source-map',
|
|
36
|
-
|
|
37
|
-
// CSS Sourcemaps off by default because relative paths are "buggy"
|
|
38
|
-
// with this option, according to the CSS-Loader README
|
|
39
|
-
// (https://github.com/webpack/css-loader#sourcemaps)
|
|
40
|
-
// In our experience, they generally work as expected,
|
|
41
|
-
// just be aware of this issue when enabling this option.
|
|
42
|
-
cssSourceMap: false
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
build: {
|
|
46
|
-
// Template for index.html
|
|
47
|
-
index: path.resolve(__dirname, '../dist/index.html'),
|
|
48
|
-
|
|
49
|
-
// Paths
|
|
50
|
-
assetsRoot: path.resolve(__dirname, '../dist'),
|
|
51
|
-
assetsSubDirectory: 'static',
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* You can set by youself according to actual condition
|
|
55
|
-
* You will need to set this if you plan to deploy your site under a sub path,
|
|
56
|
-
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
|
|
57
|
-
* then assetsPublicPath should be set to "/bar/".
|
|
58
|
-
* In most cases please use '/' !!!
|
|
59
|
-
*/
|
|
60
|
-
assetsPublicPath: '/admin/',
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Source Maps
|
|
64
|
-
*/
|
|
65
|
-
|
|
66
|
-
productionSourceMap: false,
|
|
67
|
-
// https://webpack.js.org/configuration/devtool/#production
|
|
68
|
-
devtool: 'source-map',
|
|
69
|
-
|
|
70
|
-
// Gzip off by default as many popular static hosts such as
|
|
71
|
-
// Surge or Netlify already gzip all static assets for you.
|
|
72
|
-
// Before setting to `true`, make sure to:
|
|
73
|
-
// npm install --save-dev compression-webpack-plugin
|
|
74
|
-
productionGzip: true,
|
|
75
|
-
productionGzipExtensions: ['json','js','js.map','css','html','svg','xml','txt'],
|
|
76
|
-
|
|
77
|
-
// Run the build command with an extra argument to
|
|
78
|
-
// View the bundle analyzer report after build finishes:
|
|
79
|
-
// `npm run build --report`
|
|
80
|
-
// Set to `true` or `false` to always turn it on or off
|
|
81
|
-
bundleAnalyzerReport: process.env.npm_config_report || false,
|
|
82
|
-
|
|
83
|
-
// `npm run build:prod --generate_report`
|
|
84
|
-
generateAnalyzerReport: process.env.npm_config_generate_report || false
|
|
85
|
-
}
|
|
86
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
// Template version: 1.2.6
|
|
3
|
+
// see http://vuejs-templates.github.io/webpack for documentation.
|
|
4
|
+
|
|
5
|
+
const path = require('path')
|
|
6
|
+
|
|
7
|
+
module.exports = {
|
|
8
|
+
dev: {
|
|
9
|
+
// Paths
|
|
10
|
+
assetsSubDirectory: 'static',
|
|
11
|
+
assetsPublicPath: '/',
|
|
12
|
+
proxyTable: {},
|
|
13
|
+
|
|
14
|
+
// Various Dev Server settings
|
|
15
|
+
host: 'localhost', // can be overwritten by process.env.HOST
|
|
16
|
+
port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
|
|
17
|
+
autoOpenBrowser: true,
|
|
18
|
+
errorOverlay: true,
|
|
19
|
+
notifyOnErrors: false,
|
|
20
|
+
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
|
|
21
|
+
|
|
22
|
+
// Use Eslint Loader?
|
|
23
|
+
// If true, your code will be linted during bundling and
|
|
24
|
+
// linting errors and warnings will be shown in the console.
|
|
25
|
+
useEslint: true,
|
|
26
|
+
// If true, eslint errors and warnings will also be shown in the error overlay
|
|
27
|
+
// in the browser.
|
|
28
|
+
showEslintErrorsInOverlay: false,
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Source Maps
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
// https://webpack.js.org/configuration/devtool/#development
|
|
35
|
+
devtool: 'cheap-source-map',
|
|
36
|
+
|
|
37
|
+
// CSS Sourcemaps off by default because relative paths are "buggy"
|
|
38
|
+
// with this option, according to the CSS-Loader README
|
|
39
|
+
// (https://github.com/webpack/css-loader#sourcemaps)
|
|
40
|
+
// In our experience, they generally work as expected,
|
|
41
|
+
// just be aware of this issue when enabling this option.
|
|
42
|
+
cssSourceMap: false
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
build: {
|
|
46
|
+
// Template for index.html
|
|
47
|
+
index: path.resolve(__dirname, '../dist/index.html'),
|
|
48
|
+
|
|
49
|
+
// Paths
|
|
50
|
+
assetsRoot: path.resolve(__dirname, '../dist'),
|
|
51
|
+
assetsSubDirectory: 'static',
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* You can set by youself according to actual condition
|
|
55
|
+
* You will need to set this if you plan to deploy your site under a sub path,
|
|
56
|
+
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
|
|
57
|
+
* then assetsPublicPath should be set to "/bar/".
|
|
58
|
+
* In most cases please use '/' !!!
|
|
59
|
+
*/
|
|
60
|
+
assetsPublicPath: '/admin/',
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Source Maps
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
productionSourceMap: false,
|
|
67
|
+
// https://webpack.js.org/configuration/devtool/#production
|
|
68
|
+
devtool: 'source-map',
|
|
69
|
+
|
|
70
|
+
// Gzip off by default as many popular static hosts such as
|
|
71
|
+
// Surge or Netlify already gzip all static assets for you.
|
|
72
|
+
// Before setting to `true`, make sure to:
|
|
73
|
+
// npm install --save-dev compression-webpack-plugin
|
|
74
|
+
productionGzip: true,
|
|
75
|
+
productionGzipExtensions: ['json','js','js.map','css','html','svg','xml','txt'],
|
|
76
|
+
|
|
77
|
+
// Run the build command with an extra argument to
|
|
78
|
+
// View the bundle analyzer report after build finishes:
|
|
79
|
+
// `npm run build --report`
|
|
80
|
+
// Set to `true` or `false` to always turn it on or off
|
|
81
|
+
bundleAnalyzerReport: process.env.npm_config_report || false,
|
|
82
|
+
|
|
83
|
+
// `npm run build:prod --generate_report`
|
|
84
|
+
generateAnalyzerReport: process.env.npm_config_generate_report || false
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
module.exports = {
|
|
3
|
-
NODE_ENV: '"production"',
|
|
4
|
-
BASE_API: '"/api"',
|
|
5
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
module.exports = {
|
|
3
|
+
NODE_ENV: '"production"',
|
|
4
|
+
BASE_API: '"/api"',
|
|
5
|
+
}
|
package/modules/admin/index.html
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
6
|
-
<script crossorigin src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js"></script>
|
|
7
|
-
<script crossorigin src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js"></script>
|
|
8
|
-
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
9
|
-
<script src="settings.js"></script>
|
|
10
|
-
<title>Expressa Admin</title>
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
<div id="app"></div>
|
|
14
|
-
<!-- built files will be auto injected -->
|
|
15
|
-
</body>
|
|
16
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
6
|
+
<script crossorigin src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js"></script>
|
|
7
|
+
<script crossorigin src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js"></script>
|
|
8
|
+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
|
9
|
+
<script src="settings.js"></script>
|
|
10
|
+
<title>Expressa Admin</title>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="app"></div>
|
|
14
|
+
<!-- built files will be auto injected -->
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|