expressa 2.0.21 → 2.0.23
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/.vscode/launch.json +19 -0
- 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 +260 -260
- 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 +30 -30
- 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 +69 -69
- package/cypress/support/index.js +20 -20
- package/cypress/support/util.js +10 -10
- package/cypress.config.js +18 -18
- package/cypress.json +4 -4
- package/db/cached.js +44 -40
- package/db/file.js +131 -112
- package/db/memory.js +92 -79
- package/db/mongo.js +93 -86
- package/db/postgres.js +100 -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 -41
- package/modules/access_keys/access_keys.js +32 -32
- package/modules/admin/.babelrc +8 -19
- 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 +46 -46
- package/modules/admin/build/check-versions.js +64 -64
- package/modules/admin/build/utils.js +109 -109
- package/modules/admin/build/vue-loader.conf.js +5 -5
- package/modules/admin/build/webpack.base.conf.js +112 -112
- package/modules/admin/build/webpack.dev.conf.js +95 -95
- package/modules/admin/build/webpack.prod.conf.js +112 -112
- 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/dist/css/{197.7a90435e.css → 197.e66ce8d8.css} +4 -4
- package/modules/admin/dist/css/197.e66ce8d8.css.gz +0 -0
- package/modules/admin/dist/css/{430.8c9b0482.css → 430.e83d8cfe.css} +4 -4
- package/modules/admin/dist/css/430.e83d8cfe.css.gz +0 -0
- package/modules/admin/dist/css/451.c6646d20.css.gz +0 -0
- package/modules/admin/dist/css/{566.7a90435e.css → 566.e66ce8d8.css} +4 -4
- package/modules/admin/dist/css/566.e66ce8d8.css.gz +0 -0
- package/modules/admin/dist/css/569.db9a10c2.css +213 -0
- package/modules/admin/dist/css/569.db9a10c2.css.gz +0 -0
- package/modules/admin/dist/css/572.513a323e.css +210 -0
- package/modules/admin/dist/css/572.513a323e.css.gz +0 -0
- package/modules/admin/dist/css/651.e946bda7.css.gz +0 -0
- package/modules/admin/dist/css/750.4086915d.css.gz +0 -0
- package/modules/admin/dist/css/950.1fd9d57c.css.gz +0 -0
- package/modules/admin/dist/css/{app.eba5f5e2.css → app.1c3232a3.css} +25 -25
- package/modules/admin/dist/css/app.1c3232a3.css.gz +0 -0
- package/modules/admin/dist/index.html +1 -1
- package/modules/admin/dist/static/js/197.36982650.js +1 -0
- package/modules/admin/dist/static/js/197.36982650.js.gz +0 -0
- package/modules/admin/dist/static/js/311.25e842dc.js +1 -0
- package/modules/admin/dist/static/js/311.25e842dc.js.gz +0 -0
- package/modules/admin/dist/static/js/430.53aea612.js +1 -0
- package/modules/admin/dist/static/js/430.53aea612.js.gz +0 -0
- package/modules/admin/dist/static/js/451.9f6dcdb1.js +1 -0
- package/modules/admin/dist/static/js/451.9f6dcdb1.js.gz +0 -0
- package/modules/admin/dist/static/js/460.351dad91.js +1 -0
- package/modules/admin/dist/static/js/460.351dad91.js.gz +0 -0
- package/modules/admin/dist/static/js/550.87e54b29.js +1 -0
- package/modules/admin/dist/static/js/550.87e54b29.js.gz +0 -0
- package/modules/admin/dist/static/js/569.52dba3a7.js +1 -0
- package/modules/admin/dist/static/js/569.52dba3a7.js.gz +0 -0
- package/modules/admin/dist/static/js/572.296cfd3b.js +1 -0
- package/modules/admin/dist/static/js/572.296cfd3b.js.gz +0 -0
- package/modules/admin/dist/static/js/603.98d5f5d9.js +1 -0
- package/modules/admin/dist/static/js/603.98d5f5d9.js.gz +0 -0
- package/modules/admin/dist/static/js/651.6dca6fbe.js +1 -0
- package/modules/admin/dist/static/js/651.6dca6fbe.js.gz +0 -0
- package/modules/admin/dist/static/js/653.0dff78dc.js +1 -0
- package/modules/admin/dist/static/js/653.0dff78dc.js.gz +0 -0
- package/modules/admin/dist/static/js/750.6877a6b8.js +1 -0
- package/modules/admin/dist/static/js/750.6877a6b8.js.gz +0 -0
- package/modules/admin/dist/static/js/950.4f40455a.js +1 -0
- package/modules/admin/dist/static/js/950.4f40455a.js.gz +0 -0
- package/modules/admin/dist/static/js/app.2dd732d9.js +2 -0
- package/modules/admin/dist/static/js/{app.083328f8.js.LICENSE.txt → app.2dd732d9.js.LICENSE.txt} +0 -2
- package/modules/admin/dist/static/js/app.2dd732d9.js.LICENSE.txt.gz +0 -0
- package/modules/admin/dist/static/js/app.2dd732d9.js.gz +0 -0
- package/modules/admin/index.html +16 -16
- package/modules/admin/package.json +101 -101
- 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 +206 -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/main.js +42 -42
- 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 +47 -47
- 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 +121 -121
- 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 +467 -467
- 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 +35 -35
- package/scripts/run_db_tests.sh +8 -8
- package/test/0-install.js +96 -96
- package/test/collections.js +431 -431
- package/test/collections.querying.js +288 -288
- package/test/db.js +258 -258
- package/test/db.strings.js +73 -73
- package/test/db.updating.js +186 -144
- package/test/logging.js +29 -29
- package/test/test.js +93 -93
- package/test/testserver.js +30 -30
- package/test/testutils.js +136 -136
- package/test/users.js +425 -425
- package/util.js +522 -522
- package/modules/admin/dist/css/197.7a90435e.css.gz +0 -0
- package/modules/admin/dist/css/430.8c9b0482.css.gz +0 -0
- package/modules/admin/dist/css/566.7a90435e.css.gz +0 -0
- package/modules/admin/dist/css/569.f7d5c7d5.css +0 -37
- package/modules/admin/dist/css/569.f7d5c7d5.css.gz +0 -0
- package/modules/admin/dist/css/572.74d8e965.css +0 -34
- package/modules/admin/dist/css/572.74d8e965.css.gz +0 -0
- package/modules/admin/dist/css/app.eba5f5e2.css.gz +0 -0
- package/modules/admin/dist/static/js/197.e511d91e.js +0 -1
- package/modules/admin/dist/static/js/197.e511d91e.js.gz +0 -0
- package/modules/admin/dist/static/js/430.b3941f30.js +0 -1
- package/modules/admin/dist/static/js/430.b3941f30.js.gz +0 -0
- package/modules/admin/dist/static/js/451.645974a8.js +0 -1
- package/modules/admin/dist/static/js/451.645974a8.js.gz +0 -0
- package/modules/admin/dist/static/js/460.962d5bc0.js +0 -1
- package/modules/admin/dist/static/js/460.962d5bc0.js.gz +0 -0
- package/modules/admin/dist/static/js/550.f27feb23.js +0 -1
- package/modules/admin/dist/static/js/550.f27feb23.js.gz +0 -0
- package/modules/admin/dist/static/js/556.1e08866a.js +0 -1
- package/modules/admin/dist/static/js/556.1e08866a.js.gz +0 -0
- package/modules/admin/dist/static/js/569.0fecfbee.js +0 -1
- package/modules/admin/dist/static/js/569.0fecfbee.js.gz +0 -0
- package/modules/admin/dist/static/js/572.13392e1d.js +0 -1
- package/modules/admin/dist/static/js/572.13392e1d.js.gz +0 -0
- package/modules/admin/dist/static/js/603.7b34a650.js +0 -1
- package/modules/admin/dist/static/js/603.7b34a650.js.gz +0 -0
- package/modules/admin/dist/static/js/651.564b24b6.js +0 -1
- package/modules/admin/dist/static/js/651.564b24b6.js.gz +0 -0
- package/modules/admin/dist/static/js/653.02ec1098.js +0 -1
- package/modules/admin/dist/static/js/653.02ec1098.js.gz +0 -0
- package/modules/admin/dist/static/js/750.50c950da.js +0 -1
- package/modules/admin/dist/static/js/750.50c950da.js.gz +0 -0
- package/modules/admin/dist/static/js/950.d4ff0a18.js +0 -1
- package/modules/admin/dist/static/js/950.d4ff0a18.js.gz +0 -0
- package/modules/admin/dist/static/js/app.083328f8.js +0 -2
- package/modules/admin/dist/static/js/app.083328f8.js.LICENSE.txt.gz +0 -0
- package/modules/admin/dist/static/js/app.083328f8.js.gz +0 -0
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
const path = require('path')
|
|
3
|
-
const utils = require('./utils')
|
|
4
|
-
const config = require('../config')
|
|
5
|
-
const { VueLoaderPlugin } = require('vue-loader')
|
|
6
|
-
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
7
|
-
const SvgSpriteLoaderPlugin = require('svg-sprite-loader/plugin');
|
|
8
|
-
|
|
9
|
-
function resolve(dir) {
|
|
10
|
-
return path.join(__dirname, '..', dir)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const createLintingRule = () => ({
|
|
14
|
-
test: /\.(js|vue)$/,
|
|
15
|
-
loader: 'eslint-loader',
|
|
16
|
-
enforce: 'pre',
|
|
17
|
-
include: [resolve('src'), resolve('test')],
|
|
18
|
-
options: {
|
|
19
|
-
configFile: '.eslintrc.js',
|
|
20
|
-
formatter: require('eslint-friendly-formatter'),
|
|
21
|
-
emitWarning: !config.dev.showEslintErrorsInOverlay
|
|
22
|
-
}
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
module.exports = {
|
|
26
|
-
context: path.resolve(__dirname, '../'),
|
|
27
|
-
entry: {
|
|
28
|
-
app: './src/main.js'
|
|
29
|
-
},
|
|
30
|
-
output: {
|
|
31
|
-
path: config.build.assetsRoot,
|
|
32
|
-
filename: '[name].js',
|
|
33
|
-
publicPath:
|
|
34
|
-
process.env.NODE_ENV === 'production'
|
|
35
|
-
? config.build.assetsPublicPath
|
|
36
|
-
: config.dev.assetsPublicPath
|
|
37
|
-
},
|
|
38
|
-
resolve: {
|
|
39
|
-
extensions: ['.js', '.vue', '.json'],
|
|
40
|
-
alias: {
|
|
41
|
-
'@': resolve('src')
|
|
42
|
-
},
|
|
43
|
-
fallback: {
|
|
44
|
-
path: require.resolve("path-browserify")
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
module: {
|
|
48
|
-
rules: [
|
|
49
|
-
...(config.dev.useEslint ? [createLintingRule()] : []),
|
|
50
|
-
{
|
|
51
|
-
test: /\.vue$/,
|
|
52
|
-
loader: 'vue-loader',
|
|
53
|
-
options: {
|
|
54
|
-
compilerOptions: {
|
|
55
|
-
preserveWhitespace: false
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
test: /\.js$/,
|
|
61
|
-
loader: 'babel-loader',
|
|
62
|
-
include: [
|
|
63
|
-
resolve('src'),
|
|
64
|
-
resolve('test'),
|
|
65
|
-
resolve('node_modules/webpack-dev-server/client')
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
test: /\.(png|jpe?g|gif)(\?.*)?$/,
|
|
70
|
-
loader: 'url-loader',
|
|
71
|
-
exclude: [resolve('src/icons')],
|
|
72
|
-
options: {
|
|
73
|
-
limit: 10000,
|
|
74
|
-
name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
|
|
79
|
-
loader: 'url-loader',
|
|
80
|
-
options: {
|
|
81
|
-
limit: 10000,
|
|
82
|
-
name: utils.assetsPath('media/[name].[hash:7].[ext]')
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
|
87
|
-
loader: 'file-loader',
|
|
88
|
-
options: {
|
|
89
|
-
name: utils.assetsPath('fonts/[name].[hash:7].[ext]'),
|
|
90
|
-
esModule: false
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
test: /\.svg$/,
|
|
95
|
-
loader: 'svg-sprite-loader',
|
|
96
|
-
options: {
|
|
97
|
-
symbolId: 'icon-[name]',
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
},
|
|
102
|
-
plugins: [
|
|
103
|
-
new SvgSpriteLoaderPlugin({
|
|
104
|
-
plainSprite: true, // Enable the plain sprite mode
|
|
105
|
-
}),
|
|
106
|
-
new MiniCssExtractPlugin({
|
|
107
|
-
filename: 'css/[name].[contenthash:8].css', // Customize output CSS filename
|
|
108
|
-
chunkFilename: 'css/[id].[contenthash:8].css', // Customize chunk filenames
|
|
109
|
-
}),
|
|
110
|
-
new VueLoaderPlugin()],
|
|
111
|
-
node: false
|
|
112
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
const path = require('path')
|
|
3
|
+
const utils = require('./utils')
|
|
4
|
+
const config = require('../config')
|
|
5
|
+
const { VueLoaderPlugin } = require('vue-loader')
|
|
6
|
+
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
7
|
+
const SvgSpriteLoaderPlugin = require('svg-sprite-loader/plugin');
|
|
8
|
+
|
|
9
|
+
function resolve(dir) {
|
|
10
|
+
return path.join(__dirname, '..', dir)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const createLintingRule = () => ({
|
|
14
|
+
test: /\.(js|vue)$/,
|
|
15
|
+
loader: 'eslint-loader',
|
|
16
|
+
enforce: 'pre',
|
|
17
|
+
include: [resolve('src'), resolve('test')],
|
|
18
|
+
options: {
|
|
19
|
+
configFile: '.eslintrc.js',
|
|
20
|
+
formatter: require('eslint-friendly-formatter'),
|
|
21
|
+
emitWarning: !config.dev.showEslintErrorsInOverlay
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
module.exports = {
|
|
26
|
+
context: path.resolve(__dirname, '../'),
|
|
27
|
+
entry: {
|
|
28
|
+
app: './src/main.js'
|
|
29
|
+
},
|
|
30
|
+
output: {
|
|
31
|
+
path: config.build.assetsRoot,
|
|
32
|
+
filename: '[name].js',
|
|
33
|
+
publicPath:
|
|
34
|
+
process.env.NODE_ENV === 'production'
|
|
35
|
+
? config.build.assetsPublicPath
|
|
36
|
+
: config.dev.assetsPublicPath
|
|
37
|
+
},
|
|
38
|
+
resolve: {
|
|
39
|
+
extensions: ['.js', '.vue', '.json'],
|
|
40
|
+
alias: {
|
|
41
|
+
'@': resolve('src')
|
|
42
|
+
},
|
|
43
|
+
fallback: {
|
|
44
|
+
path: require.resolve("path-browserify")
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
module: {
|
|
48
|
+
rules: [
|
|
49
|
+
...(config.dev.useEslint ? [createLintingRule()] : []),
|
|
50
|
+
{
|
|
51
|
+
test: /\.vue$/,
|
|
52
|
+
loader: 'vue-loader',
|
|
53
|
+
options: {
|
|
54
|
+
compilerOptions: {
|
|
55
|
+
preserveWhitespace: false
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
test: /\.js$/,
|
|
61
|
+
loader: 'babel-loader',
|
|
62
|
+
include: [
|
|
63
|
+
resolve('src'),
|
|
64
|
+
resolve('test'),
|
|
65
|
+
resolve('node_modules/webpack-dev-server/client')
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
test: /\.(png|jpe?g|gif)(\?.*)?$/,
|
|
70
|
+
loader: 'url-loader',
|
|
71
|
+
exclude: [resolve('src/icons')],
|
|
72
|
+
options: {
|
|
73
|
+
limit: 10000,
|
|
74
|
+
name: utils.assetsPath('img/[name].[hash:7].[ext]')
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
|
|
79
|
+
loader: 'url-loader',
|
|
80
|
+
options: {
|
|
81
|
+
limit: 10000,
|
|
82
|
+
name: utils.assetsPath('media/[name].[hash:7].[ext]')
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
|
|
87
|
+
loader: 'file-loader',
|
|
88
|
+
options: {
|
|
89
|
+
name: utils.assetsPath('fonts/[name].[hash:7].[ext]'),
|
|
90
|
+
esModule: false
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
test: /\.svg$/,
|
|
95
|
+
loader: 'svg-sprite-loader',
|
|
96
|
+
options: {
|
|
97
|
+
symbolId: 'icon-[name]',
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
plugins: [
|
|
103
|
+
new SvgSpriteLoaderPlugin({
|
|
104
|
+
plainSprite: true, // Enable the plain sprite mode
|
|
105
|
+
}),
|
|
106
|
+
new MiniCssExtractPlugin({
|
|
107
|
+
filename: 'css/[name].[contenthash:8].css', // Customize output CSS filename
|
|
108
|
+
chunkFilename: 'css/[id].[contenthash:8].css', // Customize chunk filenames
|
|
109
|
+
}),
|
|
110
|
+
new VueLoaderPlugin()],
|
|
111
|
+
node: false
|
|
112
|
+
}
|
|
@@ -1,95 +1,95 @@
|
|
|
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 HtmlWebpackPlugin = require('html-webpack-plugin')
|
|
9
|
-
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
|
10
|
-
const portfinder = require('portfinder')
|
|
11
|
-
|
|
12
|
-
function resolve(dir) {
|
|
13
|
-
return path.join(__dirname, '..', dir)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const HOST = process.env.HOST
|
|
17
|
-
const PORT = process.env.PORT && Number(process.env.PORT)
|
|
18
|
-
|
|
19
|
-
const devWebpackConfig = merge(baseWebpackConfig, {
|
|
20
|
-
mode: 'development',
|
|
21
|
-
module: {
|
|
22
|
-
rules: utils.styleLoaders({
|
|
23
|
-
sourceMap: config.dev.cssSourceMap,
|
|
24
|
-
usePostCSS: true
|
|
25
|
-
})
|
|
26
|
-
},
|
|
27
|
-
// cheap-module-eval-source-map is faster for development
|
|
28
|
-
devtool: config.dev.devtool,
|
|
29
|
-
|
|
30
|
-
// these devServer options should be customized in /config/index.js
|
|
31
|
-
devServer: {
|
|
32
|
-
clientLogLevel: 'warning',
|
|
33
|
-
historyApiFallback: true,
|
|
34
|
-
hot: true,
|
|
35
|
-
compress: true,
|
|
36
|
-
host: HOST || config.dev.host,
|
|
37
|
-
port: PORT || config.dev.port,
|
|
38
|
-
open: config.dev.autoOpenBrowser,
|
|
39
|
-
overlay: config.dev.errorOverlay
|
|
40
|
-
? { warnings: false, errors: true }
|
|
41
|
-
: false,
|
|
42
|
-
publicPath: config.dev.assetsPublicPath,
|
|
43
|
-
proxy: config.dev.proxyTable,
|
|
44
|
-
quiet: true, // necessary for FriendlyErrorsPlugin
|
|
45
|
-
watchOptions: {
|
|
46
|
-
poll: config.dev.poll
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
plugins: [
|
|
50
|
-
new webpack.DefinePlugin({
|
|
51
|
-
'process.env': require('../config/dev.env')
|
|
52
|
-
}),
|
|
53
|
-
new webpack.HotModuleReplacementPlugin(),
|
|
54
|
-
// https://github.com/ampedandwired/html-webpack-plugin
|
|
55
|
-
new HtmlWebpackPlugin({
|
|
56
|
-
filename: 'index.html',
|
|
57
|
-
template: 'index.html',
|
|
58
|
-
inject: true,
|
|
59
|
-
favicon: resolve('favicon.ico'),
|
|
60
|
-
title: 'vue-admin-template'
|
|
61
|
-
})
|
|
62
|
-
]
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
module.exports = new Promise((resolve, reject) => {
|
|
66
|
-
portfinder.basePort = process.env.PORT || config.dev.port
|
|
67
|
-
portfinder.getPort((err, port) => {
|
|
68
|
-
if (err) {
|
|
69
|
-
reject(err)
|
|
70
|
-
} else {
|
|
71
|
-
// publish the new Port, necessary for e2e tests
|
|
72
|
-
process.env.PORT = port
|
|
73
|
-
// add port to devServer config
|
|
74
|
-
devWebpackConfig.devServer.port = port
|
|
75
|
-
|
|
76
|
-
// Add FriendlyErrorsPlugin
|
|
77
|
-
devWebpackConfig.plugins.push(
|
|
78
|
-
new FriendlyErrorsPlugin({
|
|
79
|
-
compilationSuccessInfo: {
|
|
80
|
-
messages: [
|
|
81
|
-
`Your application is running here: http://${
|
|
82
|
-
devWebpackConfig.devServer.host
|
|
83
|
-
}:${port}`
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
onErrors: config.dev.notifyOnErrors
|
|
87
|
-
? utils.createNotifierCallback()
|
|
88
|
-
: undefined
|
|
89
|
-
})
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
resolve(devWebpackConfig)
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
})
|
|
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 HtmlWebpackPlugin = require('html-webpack-plugin')
|
|
9
|
+
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
|
10
|
+
const portfinder = require('portfinder')
|
|
11
|
+
|
|
12
|
+
function resolve(dir) {
|
|
13
|
+
return path.join(__dirname, '..', dir)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const HOST = process.env.HOST
|
|
17
|
+
const PORT = process.env.PORT && Number(process.env.PORT)
|
|
18
|
+
|
|
19
|
+
const devWebpackConfig = merge(baseWebpackConfig, {
|
|
20
|
+
mode: 'development',
|
|
21
|
+
module: {
|
|
22
|
+
rules: utils.styleLoaders({
|
|
23
|
+
sourceMap: config.dev.cssSourceMap,
|
|
24
|
+
usePostCSS: true
|
|
25
|
+
})
|
|
26
|
+
},
|
|
27
|
+
// cheap-module-eval-source-map is faster for development
|
|
28
|
+
devtool: config.dev.devtool,
|
|
29
|
+
|
|
30
|
+
// these devServer options should be customized in /config/index.js
|
|
31
|
+
devServer: {
|
|
32
|
+
clientLogLevel: 'warning',
|
|
33
|
+
historyApiFallback: true,
|
|
34
|
+
hot: true,
|
|
35
|
+
compress: true,
|
|
36
|
+
host: HOST || config.dev.host,
|
|
37
|
+
port: PORT || config.dev.port,
|
|
38
|
+
open: config.dev.autoOpenBrowser,
|
|
39
|
+
overlay: config.dev.errorOverlay
|
|
40
|
+
? { warnings: false, errors: true }
|
|
41
|
+
: false,
|
|
42
|
+
publicPath: config.dev.assetsPublicPath,
|
|
43
|
+
proxy: config.dev.proxyTable,
|
|
44
|
+
quiet: true, // necessary for FriendlyErrorsPlugin
|
|
45
|
+
watchOptions: {
|
|
46
|
+
poll: config.dev.poll
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
plugins: [
|
|
50
|
+
new webpack.DefinePlugin({
|
|
51
|
+
'process.env': require('../config/dev.env')
|
|
52
|
+
}),
|
|
53
|
+
new webpack.HotModuleReplacementPlugin(),
|
|
54
|
+
// https://github.com/ampedandwired/html-webpack-plugin
|
|
55
|
+
new HtmlWebpackPlugin({
|
|
56
|
+
filename: 'index.html',
|
|
57
|
+
template: 'index.html',
|
|
58
|
+
inject: true,
|
|
59
|
+
favicon: resolve('favicon.ico'),
|
|
60
|
+
title: 'vue-admin-template'
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
module.exports = new Promise((resolve, reject) => {
|
|
66
|
+
portfinder.basePort = process.env.PORT || config.dev.port
|
|
67
|
+
portfinder.getPort((err, port) => {
|
|
68
|
+
if (err) {
|
|
69
|
+
reject(err)
|
|
70
|
+
} else {
|
|
71
|
+
// publish the new Port, necessary for e2e tests
|
|
72
|
+
process.env.PORT = port
|
|
73
|
+
// add port to devServer config
|
|
74
|
+
devWebpackConfig.devServer.port = port
|
|
75
|
+
|
|
76
|
+
// Add FriendlyErrorsPlugin
|
|
77
|
+
devWebpackConfig.plugins.push(
|
|
78
|
+
new FriendlyErrorsPlugin({
|
|
79
|
+
compilationSuccessInfo: {
|
|
80
|
+
messages: [
|
|
81
|
+
`Your application is running here: http://${
|
|
82
|
+
devWebpackConfig.devServer.host
|
|
83
|
+
}:${port}`
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
onErrors: config.dev.notifyOnErrors
|
|
87
|
+
? utils.createNotifierCallback()
|
|
88
|
+
: undefined
|
|
89
|
+
})
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
resolve(devWebpackConfig)
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
})
|
|
@@ -1,112 +1,112 @@
|
|
|
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 MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
11
|
-
const TerserPlugin = require('terser-webpack-plugin');
|
|
12
|
-
|
|
13
|
-
function resolve(dir) {
|
|
14
|
-
return path.join(__dirname, '..', dir)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const env = require('../config/prod.env')
|
|
18
|
-
|
|
19
|
-
const webpackConfig = merge(baseWebpackConfig, {
|
|
20
|
-
mode: 'production',
|
|
21
|
-
module: {
|
|
22
|
-
rules: utils.styleLoaders({
|
|
23
|
-
sourceMap: config.build.productionSourceMap,
|
|
24
|
-
extract: true,
|
|
25
|
-
usePostCSS: true
|
|
26
|
-
})
|
|
27
|
-
},
|
|
28
|
-
devtool: config.build.productionSourceMap ? config.build.devtool : false,
|
|
29
|
-
output: {
|
|
30
|
-
path: config.build.assetsRoot,
|
|
31
|
-
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
|
|
32
|
-
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
|
|
33
|
-
},
|
|
34
|
-
plugins: [
|
|
35
|
-
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
|
36
|
-
new webpack.DefinePlugin({
|
|
37
|
-
'process.env': env
|
|
38
|
-
}),
|
|
39
|
-
// generate dist index.html with correct asset hash for caching.
|
|
40
|
-
// you can customize output by editing /index.html
|
|
41
|
-
// see https://github.com/ampedandwired/html-webpack-plugin
|
|
42
|
-
new HtmlWebpackPlugin({
|
|
43
|
-
filename: config.build.index,
|
|
44
|
-
template: 'index.html',
|
|
45
|
-
inject: true,
|
|
46
|
-
favicon: resolve('favicon.ico'),
|
|
47
|
-
title: 'vue-admin-template',
|
|
48
|
-
minify: {
|
|
49
|
-
removeComments: true,
|
|
50
|
-
collapseWhitespace: true,
|
|
51
|
-
removeAttributeQuotes: true
|
|
52
|
-
// more options:
|
|
53
|
-
// https://github.com/kangax/html-minifier#options-quick-reference
|
|
54
|
-
}
|
|
55
|
-
// default sort mode uses toposort which cannot handle cyclic deps
|
|
56
|
-
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
|
57
|
-
// matter anyway
|
|
58
|
-
}),
|
|
59
|
-
// copy custom static assets
|
|
60
|
-
new CopyWebpackPlugin([
|
|
61
|
-
{
|
|
62
|
-
from: path.resolve(__dirname, '../static'),
|
|
63
|
-
to: config.build.assetsSubDirectory,
|
|
64
|
-
ignore: ['.*']
|
|
65
|
-
}
|
|
66
|
-
])
|
|
67
|
-
],
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
if (config.build.productionGzip) {
|
|
71
|
-
const CompressionWebpackPlugin = require('compression-webpack-plugin')
|
|
72
|
-
|
|
73
|
-
webpackConfig.plugins.push(
|
|
74
|
-
new CompressionWebpackPlugin({
|
|
75
|
-
filename: '[path][base].gz',
|
|
76
|
-
algorithm: 'gzip',
|
|
77
|
-
test: new RegExp(
|
|
78
|
-
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
|
|
79
|
-
),
|
|
80
|
-
compressionOptions: {
|
|
81
|
-
level: 9,
|
|
82
|
-
},
|
|
83
|
-
minRatio: Infinity,
|
|
84
|
-
})
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
|
|
89
|
-
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
|
90
|
-
.BundleAnalyzerPlugin
|
|
91
|
-
|
|
92
|
-
if (config.build.bundleAnalyzerReport) {
|
|
93
|
-
webpackConfig.plugins.push(
|
|
94
|
-
new BundleAnalyzerPlugin({
|
|
95
|
-
analyzerPort: 8080,
|
|
96
|
-
generateStatsFile: false
|
|
97
|
-
})
|
|
98
|
-
)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (config.build.generateAnalyzerReport) {
|
|
102
|
-
webpackConfig.plugins.push(
|
|
103
|
-
new BundleAnalyzerPlugin({
|
|
104
|
-
analyzerMode: 'static',
|
|
105
|
-
reportFilename: 'bundle-report.html',
|
|
106
|
-
openAnalyzer: false
|
|
107
|
-
})
|
|
108
|
-
)
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
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 MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
11
|
+
const TerserPlugin = require('terser-webpack-plugin');
|
|
12
|
+
|
|
13
|
+
function resolve(dir) {
|
|
14
|
+
return path.join(__dirname, '..', dir)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const env = require('../config/prod.env')
|
|
18
|
+
|
|
19
|
+
const webpackConfig = merge(baseWebpackConfig, {
|
|
20
|
+
mode: 'production',
|
|
21
|
+
module: {
|
|
22
|
+
rules: utils.styleLoaders({
|
|
23
|
+
sourceMap: config.build.productionSourceMap,
|
|
24
|
+
extract: true,
|
|
25
|
+
usePostCSS: true
|
|
26
|
+
})
|
|
27
|
+
},
|
|
28
|
+
devtool: config.build.productionSourceMap ? config.build.devtool : false,
|
|
29
|
+
output: {
|
|
30
|
+
path: config.build.assetsRoot,
|
|
31
|
+
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
|
|
32
|
+
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
|
|
33
|
+
},
|
|
34
|
+
plugins: [
|
|
35
|
+
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
|
36
|
+
new webpack.DefinePlugin({
|
|
37
|
+
'process.env': env
|
|
38
|
+
}),
|
|
39
|
+
// generate dist index.html with correct asset hash for caching.
|
|
40
|
+
// you can customize output by editing /index.html
|
|
41
|
+
// see https://github.com/ampedandwired/html-webpack-plugin
|
|
42
|
+
new HtmlWebpackPlugin({
|
|
43
|
+
filename: config.build.index,
|
|
44
|
+
template: 'index.html',
|
|
45
|
+
inject: true,
|
|
46
|
+
favicon: resolve('favicon.ico'),
|
|
47
|
+
title: 'vue-admin-template',
|
|
48
|
+
minify: {
|
|
49
|
+
removeComments: true,
|
|
50
|
+
collapseWhitespace: true,
|
|
51
|
+
removeAttributeQuotes: true
|
|
52
|
+
// more options:
|
|
53
|
+
// https://github.com/kangax/html-minifier#options-quick-reference
|
|
54
|
+
}
|
|
55
|
+
// default sort mode uses toposort which cannot handle cyclic deps
|
|
56
|
+
// in certain cases, and in webpack 4, chunk order in HTML doesn't
|
|
57
|
+
// matter anyway
|
|
58
|
+
}),
|
|
59
|
+
// copy custom static assets
|
|
60
|
+
new CopyWebpackPlugin([
|
|
61
|
+
{
|
|
62
|
+
from: path.resolve(__dirname, '../static'),
|
|
63
|
+
to: config.build.assetsSubDirectory,
|
|
64
|
+
ignore: ['.*']
|
|
65
|
+
}
|
|
66
|
+
])
|
|
67
|
+
],
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
if (config.build.productionGzip) {
|
|
71
|
+
const CompressionWebpackPlugin = require('compression-webpack-plugin')
|
|
72
|
+
|
|
73
|
+
webpackConfig.plugins.push(
|
|
74
|
+
new CompressionWebpackPlugin({
|
|
75
|
+
filename: '[path][base].gz',
|
|
76
|
+
algorithm: 'gzip',
|
|
77
|
+
test: new RegExp(
|
|
78
|
+
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
|
|
79
|
+
),
|
|
80
|
+
compressionOptions: {
|
|
81
|
+
level: 9,
|
|
82
|
+
},
|
|
83
|
+
minRatio: Infinity,
|
|
84
|
+
})
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
|
|
89
|
+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
|
|
90
|
+
.BundleAnalyzerPlugin
|
|
91
|
+
|
|
92
|
+
if (config.build.bundleAnalyzerReport) {
|
|
93
|
+
webpackConfig.plugins.push(
|
|
94
|
+
new BundleAnalyzerPlugin({
|
|
95
|
+
analyzerPort: 8080,
|
|
96
|
+
generateStatsFile: false
|
|
97
|
+
})
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (config.build.generateAnalyzerReport) {
|
|
102
|
+
webpackConfig.plugins.push(
|
|
103
|
+
new BundleAnalyzerPlugin({
|
|
104
|
+
analyzerMode: 'static',
|
|
105
|
+
reportFilename: 'bundle-report.html',
|
|
106
|
+
openAnalyzer: false
|
|
107
|
+
})
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
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
|
+
})
|