expressa 2.0.17 → 2.0.18
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 +260 -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 -41
- package/modules/access_keys/access_keys.js +32 -32
- package/modules/admin/.babelrc +19 -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 +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 +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/index.html +1 -1
- package/modules/admin/dist/index.html.gz +0 -0
- package/modules/admin/dist/static/css/app.9dd57eea.css +1 -0
- package/modules/admin/dist/static/css/app.9dd57eea.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css +1 -0
- package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css +1 -0
- package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-621e.b826be8d.css +1 -0
- package/modules/admin/dist/static/css/chunk-621e.b826be8d.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-656b.9c828b00.css +1 -0
- 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 +1 -0
- package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css +1 -0
- 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 +1 -0
- package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-e374.025d58bb.css +1 -0
- package/modules/admin/dist/static/css/chunk-e374.025d58bb.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css +1 -0
- package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css +1 -0
- package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css.gz +0 -0
- package/modules/admin/dist/static/css/chunk-libs.327ad89e.css +14 -0
- 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/js/app.e9461593.js +1 -0
- package/modules/admin/dist/static/js/app.e9461593.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js +2 -0
- package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt +13 -0
- 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 +1 -0
- package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-5b97.ac360086.js +1 -0
- package/modules/admin/dist/static/js/chunk-5b97.ac360086.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js +1 -0
- package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-621e.ccf42393.js +1 -0
- package/modules/admin/dist/static/js/chunk-621e.ccf42393.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js +1 -0
- package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-7291.590524e9.js +1 -0
- package/modules/admin/dist/static/js/chunk-7291.590524e9.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js +1 -0
- package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js +1 -0
- package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-b423.387c504c.js +1 -0
- package/modules/admin/dist/static/js/chunk-b423.387c504c.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js +1 -0
- package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js +1 -0
- package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js +1 -0
- package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js +1 -0
- package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-f075.315ceec1.js +1 -0
- package/modules/admin/dist/static/js/chunk-f075.315ceec1.js.gz +0 -0
- package/modules/admin/dist/static/js/chunk-libs.06c38828.js +2 -0
- package/modules/admin/dist/static/js/{app.981e71b3.js.LICENSE.txt → chunk-libs.06c38828.js.LICENSE.txt} +18 -15
- 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
- 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 +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/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 +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 -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 +144 -144
- package/test/logging.js +29 -29
- package/test/test.js +93 -93
- package/test/testserver.js +17 -17
- package/test/testutils.js +136 -136
- package/test/users.js +425 -425
- package/util.js +522 -522
- package/modules/admin/dist/164c6167c1f3c497c07c.woff +0 -1
- package/modules/admin/dist/42ac07abc8473600c41f.ttf +0 -1
- package/modules/admin/dist/86dccb18a7eb4be8ef1a.woff +0 -1
- package/modules/admin/dist/c45297c558e0318fc9c5.ttf +0 -1
- package/modules/admin/dist/c717c9930715e24fa12c.woff +0 -1
- package/modules/admin/dist/ca6f07ef23f24cc2738a.ttf +0 -1
- package/modules/admin/dist/css/269.f7d5c7d5.css +0 -37
- package/modules/admin/dist/css/269.f7d5c7d5.css.gz +0 -0
- package/modules/admin/dist/css/451.c6646d20.css +0 -1
- package/modules/admin/dist/css/451.c6646d20.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/651.e946bda7.css +0 -6
- package/modules/admin/dist/css/651.e946bda7.css.gz +0 -0
- package/modules/admin/dist/css/699.d1f90954.css +0 -8
- package/modules/admin/dist/css/699.d1f90954.css.gz +0 -0
- package/modules/admin/dist/css/750.4086915d.css +0 -2
- package/modules/admin/dist/css/750.4086915d.css.gz +0 -0
- package/modules/admin/dist/css/864.506917a4.css +0 -7
- package/modules/admin/dist/css/864.506917a4.css.gz +0 -0
- package/modules/admin/dist/css/899.506917a4.css +0 -7
- package/modules/admin/dist/css/899.506917a4.css.gz +0 -0
- package/modules/admin/dist/css/950.1fd9d57c.css +0 -7
- package/modules/admin/dist/css/950.1fd9d57c.css.gz +0 -0
- package/modules/admin/dist/css/app.11cc6245.css +0 -39
- package/modules/admin/dist/css/app.11cc6245.css.gz +0 -0
- package/modules/admin/dist/css/app.2e1b0d79.css +0 -591
- package/modules/admin/dist/css/app.2e1b0d79.css.gz +0 -0
- package/modules/admin/dist/css/app.4d43d0fd.css +0 -592
- package/modules/admin/dist/css/app.4d43d0fd.css.gz +0 -0
- package/modules/admin/dist/css/app.abace109.css +0 -1
- package/modules/admin/dist/css/app.abace109.css.gz +0 -0
- package/modules/admin/dist/css/chunk-elementUI.67ad86d7.css +0 -1
- package/modules/admin/dist/css/chunk-elementUI.67ad86d7.css.gz +0 -0
- package/modules/admin/dist/css/chunk-elementUI.9e660bfd.css +0 -1
- package/modules/admin/dist/css/chunk-elementUI.9e660bfd.css.gz +0 -0
- package/modules/admin/dist/css/chunk-elementUI.c77cf142.css +0 -1
- package/modules/admin/dist/css/chunk-elementUI.c77cf142.css.gz +0 -0
- package/modules/admin/dist/css/chunk-elementUI.f1625b35.css +0 -1
- package/modules/admin/dist/css/chunk-elementUI.f1625b35.css.gz +0 -0
- package/modules/admin/dist/css/chunk-elementUI.f25dfb9b.css +0 -1
- package/modules/admin/dist/css/chunk-elementUI.f25dfb9b.css.gz +0 -0
- package/modules/admin/dist/css/chunk-libs.de0d8484.css +0 -551
- package/modules/admin/dist/css/chunk-libs.de0d8484.css.gz +0 -0
- package/modules/admin/dist/static/fonts/element-icons.313f7da.woff +0 -0
- package/modules/admin/dist/static/fonts/element-icons.4520188.ttf +0 -0
- package/modules/admin/dist/static/js/269.7245ceaf.js +0 -1
- package/modules/admin/dist/static/js/269.7245ceaf.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/556.1e08866a.js +0 -1
- package/modules/admin/dist/static/js/556.1e08866a.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/637.26413baa.js +0 -1
- package/modules/admin/dist/static/js/637.26413baa.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/699.c7564884.js +0 -1
- package/modules/admin/dist/static/js/699.c7564884.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/864.4f43847d.js +0 -1
- package/modules/admin/dist/static/js/864.4f43847d.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.981e71b3.js +0 -2
- package/modules/admin/dist/static/js/app.981e71b3.js.LICENSE.txt.gz +0 -0
- package/modules/admin/dist/static/js/app.981e71b3.js.gz +0 -0
- /package/modules/admin/dist/static/img/{404.4cf6930.png → 404.a57b6f3.png} +0 -0
package/modules/admin/README.md
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
# vue-admin-template
|
|
2
|
-
|
|
3
|
-
> A minimal vue admin template with Element UI & axios & iconfont & permission control & lint
|
|
4
|
-
|
|
5
|
-
**Live demo:** http://panjiachen.github.io/vue-admin-template
|
|
6
|
-
|
|
7
|
-
[中文文档](https://github.com/PanJiaChen/vue-admin-template/blob/master/README-zh.md)
|
|
8
|
-
|
|
9
|
-
## Build Setup
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Clone project
|
|
13
|
-
git clone https://github.com/PanJiaChen/vue-admin-template.git
|
|
14
|
-
|
|
15
|
-
# Install dependencies
|
|
16
|
-
npm install
|
|
17
|
-
|
|
18
|
-
# Serve with hot reload at localhost:9528
|
|
19
|
-
npm run dev
|
|
20
|
-
|
|
21
|
-
# Build for production with minification
|
|
22
|
-
npm run build
|
|
23
|
-
|
|
24
|
-
# Build for production and view the bundle analyzer report
|
|
25
|
-
npm run build --report
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Demo
|
|
29
|
-
|
|
30
|
-

|
|
31
|
-
|
|
32
|
-
## Extra
|
|
33
|
-
|
|
34
|
-
If you want router permission && generate menu by user roles , you can use this branch [permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
|
|
35
|
-
|
|
36
|
-
This project is based on `webpack4` development. If you want to use `webpack3` development, please use this branch [webpack3](https://github.com/PanJiaChen/vue-admin-template/tree/webpack3)
|
|
37
|
-
|
|
38
|
-
For `typescript` version, you can use [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour))
|
|
39
|
-
|
|
40
|
-
## Related Project
|
|
41
|
-
|
|
42
|
-
[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
|
43
|
-
|
|
44
|
-
[electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
|
45
|
-
|
|
46
|
-
[vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
|
47
|
-
|
|
48
|
-
### Element-Ui using cdn tutorial
|
|
49
|
-
|
|
50
|
-
First find `index.html`([root directory](https://github.com/PanJiaChen/vue-admin-template/blob/element-ui-cdn/index.html))
|
|
51
|
-
|
|
52
|
-
Import css and js of `Element`, and then import vue. Because `Element` is vue-dependent, vue must be import before it.
|
|
53
|
-
|
|
54
|
-
Then find [webpack.base.conf.js](https://github.com/PanJiaChen/vue-admin-template/blob/element-ui-cdn/build/webpack.base.conf.js)
|
|
55
|
-
Add `externals` to make webpack not package vue and element.
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
externals: {
|
|
59
|
-
vue: 'Vue',
|
|
60
|
-
'element-ui':'ELEMENT'
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Finally there is a small detail to pay attention to that if you import vue in global, you don't need to manually `Vue.use(Vuex)`, it will be automatically mounted, see
|
|
65
|
-
[issue](https://github.com/vuejs/vuex/issues/731)
|
|
66
|
-
|
|
67
|
-
And you can use `npm run build --report` to see the effect
|
|
68
|
-
|
|
69
|
-
Pictured:
|
|
70
|
-

|
|
71
|
-
|
|
72
|
-
**[Detailed code](https://github.com/PanJiaChen/vue-admin-template/commit/746aff560932704ae821f82f10b8b2a9681d5177)**
|
|
73
|
-
|
|
74
|
-
**[Branch](https://github.com/PanJiaChen/vue-admin-template/tree/element-ui-cdn)**
|
|
75
|
-
|
|
76
|
-
## Browsers support
|
|
77
|
-
|
|
78
|
-
Modern browsers and Internet Explorer 10+.
|
|
79
|
-
|
|
80
|
-
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
|
81
|
-
| --------- | --------- | --------- | --------- |
|
|
82
|
-
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
|
83
|
-
|
|
84
|
-
## License
|
|
85
|
-
|
|
86
|
-
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
|
87
|
-
|
|
88
|
-
Copyright (c) 2017-present PanJiaChen
|
|
1
|
+
# vue-admin-template
|
|
2
|
+
|
|
3
|
+
> A minimal vue admin template with Element UI & axios & iconfont & permission control & lint
|
|
4
|
+
|
|
5
|
+
**Live demo:** http://panjiachen.github.io/vue-admin-template
|
|
6
|
+
|
|
7
|
+
[中文文档](https://github.com/PanJiaChen/vue-admin-template/blob/master/README-zh.md)
|
|
8
|
+
|
|
9
|
+
## Build Setup
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Clone project
|
|
13
|
+
git clone https://github.com/PanJiaChen/vue-admin-template.git
|
|
14
|
+
|
|
15
|
+
# Install dependencies
|
|
16
|
+
npm install
|
|
17
|
+
|
|
18
|
+
# Serve with hot reload at localhost:9528
|
|
19
|
+
npm run dev
|
|
20
|
+
|
|
21
|
+
# Build for production with minification
|
|
22
|
+
npm run build
|
|
23
|
+
|
|
24
|
+
# Build for production and view the bundle analyzer report
|
|
25
|
+
npm run build --report
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Demo
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
## Extra
|
|
33
|
+
|
|
34
|
+
If you want router permission && generate menu by user roles , you can use this branch [permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
|
|
35
|
+
|
|
36
|
+
This project is based on `webpack4` development. If you want to use `webpack3` development, please use this branch [webpack3](https://github.com/PanJiaChen/vue-admin-template/tree/webpack3)
|
|
37
|
+
|
|
38
|
+
For `typescript` version, you can use [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour))
|
|
39
|
+
|
|
40
|
+
## Related Project
|
|
41
|
+
|
|
42
|
+
[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
|
|
43
|
+
|
|
44
|
+
[electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
|
|
45
|
+
|
|
46
|
+
[vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template)
|
|
47
|
+
|
|
48
|
+
### Element-Ui using cdn tutorial
|
|
49
|
+
|
|
50
|
+
First find `index.html`([root directory](https://github.com/PanJiaChen/vue-admin-template/blob/element-ui-cdn/index.html))
|
|
51
|
+
|
|
52
|
+
Import css and js of `Element`, and then import vue. Because `Element` is vue-dependent, vue must be import before it.
|
|
53
|
+
|
|
54
|
+
Then find [webpack.base.conf.js](https://github.com/PanJiaChen/vue-admin-template/blob/element-ui-cdn/build/webpack.base.conf.js)
|
|
55
|
+
Add `externals` to make webpack not package vue and element.
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
externals: {
|
|
59
|
+
vue: 'Vue',
|
|
60
|
+
'element-ui':'ELEMENT'
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Finally there is a small detail to pay attention to that if you import vue in global, you don't need to manually `Vue.use(Vuex)`, it will be automatically mounted, see
|
|
65
|
+
[issue](https://github.com/vuejs/vuex/issues/731)
|
|
66
|
+
|
|
67
|
+
And you can use `npm run build --report` to see the effect
|
|
68
|
+
|
|
69
|
+
Pictured:
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
**[Detailed code](https://github.com/PanJiaChen/vue-admin-template/commit/746aff560932704ae821f82f10b8b2a9681d5177)**
|
|
73
|
+
|
|
74
|
+
**[Branch](https://github.com/PanJiaChen/vue-admin-template/tree/element-ui-cdn)**
|
|
75
|
+
|
|
76
|
+
## Browsers support
|
|
77
|
+
|
|
78
|
+
Modern browsers and Internet Explorer 10+.
|
|
79
|
+
|
|
80
|
+
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari |
|
|
81
|
+
| --------- | --------- | --------- | --------- |
|
|
82
|
+
| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
|
|
83
|
+
|
|
84
|
+
## License
|
|
85
|
+
|
|
86
|
+
[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
|
|
87
|
+
|
|
88
|
+
Copyright (c) 2017-present PanJiaChen
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
require('./check-versions')()
|
|
3
|
-
|
|
4
|
-
process.env.NODE_ENV = 'production'
|
|
5
|
-
|
|
6
|
-
const ora = require('ora')
|
|
7
|
-
const rm = require('rimraf')
|
|
8
|
-
const path = require('path')
|
|
9
|
-
const chalk = require('chalk')
|
|
10
|
-
const webpack = require('webpack')
|
|
11
|
-
const config = require('../config')
|
|
12
|
-
const webpackConfig = require('./webpack.prod.conf')
|
|
13
|
-
|
|
14
|
-
const spinner = ora('building for production...')
|
|
15
|
-
spinner.start()
|
|
16
|
-
|
|
17
|
-
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
|
|
18
|
-
if (err) throw err
|
|
19
|
-
webpack(webpackConfig, (err, stats) => {
|
|
20
|
-
spinner.stop()
|
|
21
|
-
if (err) throw err
|
|
22
|
-
process.stdout.write(
|
|
23
|
-
stats.toString({
|
|
24
|
-
colors: true,
|
|
25
|
-
modules: false,
|
|
26
|
-
children: false,
|
|
27
|
-
chunks: false,
|
|
28
|
-
chunkModules: false
|
|
29
|
-
}) + '\n\n'
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
if (stats.hasErrors()) {
|
|
33
|
-
console.log(chalk.red(' Build failed with errors.\n'))
|
|
34
|
-
process.exit(1)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
console.log(chalk.cyan(' Build complete.\n'))
|
|
38
|
-
console.log(
|
|
39
|
-
chalk.yellow(
|
|
40
|
-
' Tip: built files are meant to be served over an HTTP server.\n' +
|
|
41
|
-
" Opening index.html over file:// won't work.\n"
|
|
42
|
-
)
|
|
43
|
-
)
|
|
44
|
-
})
|
|
45
|
-
})
|
|
1
|
+
'use strict'
|
|
2
|
+
require('./check-versions')()
|
|
3
|
+
|
|
4
|
+
process.env.NODE_ENV = 'production'
|
|
5
|
+
|
|
6
|
+
const ora = require('ora')
|
|
7
|
+
const rm = require('rimraf')
|
|
8
|
+
const path = require('path')
|
|
9
|
+
const chalk = require('chalk')
|
|
10
|
+
const webpack = require('webpack')
|
|
11
|
+
const config = require('../config')
|
|
12
|
+
const webpackConfig = require('./webpack.prod.conf')
|
|
13
|
+
|
|
14
|
+
const spinner = ora('building for production...')
|
|
15
|
+
spinner.start()
|
|
16
|
+
|
|
17
|
+
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
|
|
18
|
+
if (err) throw err
|
|
19
|
+
webpack(webpackConfig, (err, stats) => {
|
|
20
|
+
spinner.stop()
|
|
21
|
+
if (err) throw err
|
|
22
|
+
process.stdout.write(
|
|
23
|
+
stats.toString({
|
|
24
|
+
colors: true,
|
|
25
|
+
modules: false,
|
|
26
|
+
children: false,
|
|
27
|
+
chunks: false,
|
|
28
|
+
chunkModules: false
|
|
29
|
+
}) + '\n\n'
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
if (stats.hasErrors()) {
|
|
33
|
+
console.log(chalk.red(' Build failed with errors.\n'))
|
|
34
|
+
process.exit(1)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.log(chalk.cyan(' Build complete.\n'))
|
|
38
|
+
console.log(
|
|
39
|
+
chalk.yellow(
|
|
40
|
+
' Tip: built files are meant to be served over an HTTP server.\n' +
|
|
41
|
+
" Opening index.html over file:// won't work.\n"
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
})
|
|
45
|
+
})
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
const chalk = require('chalk')
|
|
3
|
-
const semver = require('semver')
|
|
4
|
-
const packageConfig = require('../package.json')
|
|
5
|
-
const shell = require('shelljs')
|
|
6
|
-
|
|
7
|
-
function exec(cmd) {
|
|
8
|
-
return require('child_process')
|
|
9
|
-
.execSync(cmd)
|
|
10
|
-
.toString()
|
|
11
|
-
.trim()
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const versionRequirements = [
|
|
15
|
-
{
|
|
16
|
-
name: 'node',
|
|
17
|
-
currentVersion: semver.clean(process.version),
|
|
18
|
-
versionRequirement: packageConfig.engines.node
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
|
|
22
|
-
if (shell.which('npm')) {
|
|
23
|
-
versionRequirements.push({
|
|
24
|
-
name: 'npm',
|
|
25
|
-
currentVersion: exec('npm --version'),
|
|
26
|
-
versionRequirement: packageConfig.engines.npm
|
|
27
|
-
})
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
module.exports = function() {
|
|
31
|
-
const warnings = []
|
|
32
|
-
|
|
33
|
-
for (let i = 0; i < versionRequirements.length; i++) {
|
|
34
|
-
const mod = versionRequirements[i]
|
|
35
|
-
|
|
36
|
-
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
|
|
37
|
-
warnings.push(
|
|
38
|
-
mod.name +
|
|
39
|
-
': ' +
|
|
40
|
-
chalk.red(mod.currentVersion) +
|
|
41
|
-
' should be ' +
|
|
42
|
-
chalk.green(mod.versionRequirement)
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (warnings.length) {
|
|
48
|
-
console.log('')
|
|
49
|
-
console.log(
|
|
50
|
-
chalk.yellow(
|
|
51
|
-
'To use this template, you must update following to modules:'
|
|
52
|
-
)
|
|
53
|
-
)
|
|
54
|
-
console.log()
|
|
55
|
-
|
|
56
|
-
for (let i = 0; i < warnings.length; i++) {
|
|
57
|
-
const warning = warnings[i]
|
|
58
|
-
console.log(' ' + warning)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
console.log()
|
|
62
|
-
process.exit(1)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
const chalk = require('chalk')
|
|
3
|
+
const semver = require('semver')
|
|
4
|
+
const packageConfig = require('../package.json')
|
|
5
|
+
const shell = require('shelljs')
|
|
6
|
+
|
|
7
|
+
function exec(cmd) {
|
|
8
|
+
return require('child_process')
|
|
9
|
+
.execSync(cmd)
|
|
10
|
+
.toString()
|
|
11
|
+
.trim()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const versionRequirements = [
|
|
15
|
+
{
|
|
16
|
+
name: 'node',
|
|
17
|
+
currentVersion: semver.clean(process.version),
|
|
18
|
+
versionRequirement: packageConfig.engines.node
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
if (shell.which('npm')) {
|
|
23
|
+
versionRequirements.push({
|
|
24
|
+
name: 'npm',
|
|
25
|
+
currentVersion: exec('npm --version'),
|
|
26
|
+
versionRequirement: packageConfig.engines.npm
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
module.exports = function() {
|
|
31
|
+
const warnings = []
|
|
32
|
+
|
|
33
|
+
for (let i = 0; i < versionRequirements.length; i++) {
|
|
34
|
+
const mod = versionRequirements[i]
|
|
35
|
+
|
|
36
|
+
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
|
|
37
|
+
warnings.push(
|
|
38
|
+
mod.name +
|
|
39
|
+
': ' +
|
|
40
|
+
chalk.red(mod.currentVersion) +
|
|
41
|
+
' should be ' +
|
|
42
|
+
chalk.green(mod.versionRequirement)
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (warnings.length) {
|
|
48
|
+
console.log('')
|
|
49
|
+
console.log(
|
|
50
|
+
chalk.yellow(
|
|
51
|
+
'To use this template, you must update following to modules:'
|
|
52
|
+
)
|
|
53
|
+
)
|
|
54
|
+
console.log()
|
|
55
|
+
|
|
56
|
+
for (let i = 0; i < warnings.length; i++) {
|
|
57
|
+
const warning = warnings[i]
|
|
58
|
+
console.log(' ' + warning)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
console.log()
|
|
62
|
+
process.exit(1)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
const path = require('path')
|
|
3
|
-
const config = require('../config')
|
|
4
|
-
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
5
|
-
const packageConfig = require('../package.json')
|
|
6
|
-
|
|
7
|
-
exports.assetsPath = function(_path) {
|
|
8
|
-
const assetsSubDirectory =
|
|
9
|
-
process.env.NODE_ENV === 'production'
|
|
10
|
-
? config.build.assetsSubDirectory
|
|
11
|
-
: config.dev.assetsSubDirectory
|
|
12
|
-
|
|
13
|
-
return path.posix.join(assetsSubDirectory, _path)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
exports.cssLoaders = function(options) {
|
|
17
|
-
options = options || {}
|
|
18
|
-
|
|
19
|
-
const cssLoader = {
|
|
20
|
-
loader: 'css-loader',
|
|
21
|
-
options: {
|
|
22
|
-
sourceMap: options.sourceMap
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const postcssLoader = {
|
|
27
|
-
loader: 'postcss-loader',
|
|
28
|
-
options: {
|
|
29
|
-
sourceMap: options.sourceMap
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// generate loader string to be used with extract text plugin
|
|
34
|
-
function generateLoaders(loader, loaderOptions) {
|
|
35
|
-
const loaders = []
|
|
36
|
-
|
|
37
|
-
// Extract CSS when that option is specified
|
|
38
|
-
// (which is the case during production build)
|
|
39
|
-
if (options.extract) {
|
|
40
|
-
loaders.push(MiniCssExtractPlugin.loader)
|
|
41
|
-
} else {
|
|
42
|
-
loaders.push('vue-style-loader')
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
loaders.push(cssLoader)
|
|
46
|
-
|
|
47
|
-
if (options.usePostCSS) {
|
|
48
|
-
loaders.push(postcssLoader)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (loader) {
|
|
52
|
-
loaders.push({
|
|
53
|
-
loader: loader + '-loader',
|
|
54
|
-
options: Object.assign({}, loaderOptions, {
|
|
55
|
-
sourceMap: options.sourceMap
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return loaders
|
|
61
|
-
}
|
|
62
|
-
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
|
63
|
-
return {
|
|
64
|
-
css: generateLoaders(),
|
|
65
|
-
postcss: generateLoaders(),
|
|
66
|
-
less: generateLoaders('less'),
|
|
67
|
-
sass: generateLoaders('sass', {
|
|
68
|
-
indentedSyntax: true
|
|
69
|
-
}),
|
|
70
|
-
scss: generateLoaders('sass'),
|
|
71
|
-
stylus: generateLoaders('stylus'),
|
|
72
|
-
styl: generateLoaders('stylus')
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Generate loaders for standalone style files (outside of .vue)
|
|
77
|
-
exports.styleLoaders = function(options) {
|
|
78
|
-
const output = []
|
|
79
|
-
const loaders = exports.cssLoaders(options)
|
|
80
|
-
|
|
81
|
-
for (const extension in loaders) {
|
|
82
|
-
const loader = loaders[extension]
|
|
83
|
-
output.push({
|
|
84
|
-
test: new RegExp('\\.' + extension + '$'),
|
|
85
|
-
use: loader
|
|
86
|
-
})
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return output
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
exports.createNotifierCallback = () => {
|
|
93
|
-
const notifier = require('node-notifier')
|
|
94
|
-
|
|
95
|
-
return (severity, errors) => {
|
|
96
|
-
if (severity !== 'error') return
|
|
97
|
-
|
|
98
|
-
const error = errors[0]
|
|
99
|
-
const filename = error.file && error.file.split('!').pop()
|
|
100
|
-
|
|
101
|
-
notifier.notify({
|
|
102
|
-
title: packageConfig.name,
|
|
103
|
-
message: severity + ': ' + error.name,
|
|
104
|
-
subtitle: filename || '',
|
|
105
|
-
icon: path.join(__dirname, 'logo.png')
|
|
106
|
-
})
|
|
107
|
-
}
|
|
108
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
const path = require('path')
|
|
3
|
+
const config = require('../config')
|
|
4
|
+
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
5
|
+
const packageConfig = require('../package.json')
|
|
6
|
+
|
|
7
|
+
exports.assetsPath = function(_path) {
|
|
8
|
+
const assetsSubDirectory =
|
|
9
|
+
process.env.NODE_ENV === 'production'
|
|
10
|
+
? config.build.assetsSubDirectory
|
|
11
|
+
: config.dev.assetsSubDirectory
|
|
12
|
+
|
|
13
|
+
return path.posix.join(assetsSubDirectory, _path)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.cssLoaders = function(options) {
|
|
17
|
+
options = options || {}
|
|
18
|
+
|
|
19
|
+
const cssLoader = {
|
|
20
|
+
loader: 'css-loader',
|
|
21
|
+
options: {
|
|
22
|
+
sourceMap: options.sourceMap
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const postcssLoader = {
|
|
27
|
+
loader: 'postcss-loader',
|
|
28
|
+
options: {
|
|
29
|
+
sourceMap: options.sourceMap
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// generate loader string to be used with extract text plugin
|
|
34
|
+
function generateLoaders(loader, loaderOptions) {
|
|
35
|
+
const loaders = []
|
|
36
|
+
|
|
37
|
+
// Extract CSS when that option is specified
|
|
38
|
+
// (which is the case during production build)
|
|
39
|
+
if (options.extract) {
|
|
40
|
+
loaders.push(MiniCssExtractPlugin.loader)
|
|
41
|
+
} else {
|
|
42
|
+
loaders.push('vue-style-loader')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
loaders.push(cssLoader)
|
|
46
|
+
|
|
47
|
+
if (options.usePostCSS) {
|
|
48
|
+
loaders.push(postcssLoader)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (loader) {
|
|
52
|
+
loaders.push({
|
|
53
|
+
loader: loader + '-loader',
|
|
54
|
+
options: Object.assign({}, loaderOptions, {
|
|
55
|
+
sourceMap: options.sourceMap
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return loaders
|
|
61
|
+
}
|
|
62
|
+
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
|
63
|
+
return {
|
|
64
|
+
css: generateLoaders(),
|
|
65
|
+
postcss: generateLoaders(),
|
|
66
|
+
less: generateLoaders('less'),
|
|
67
|
+
sass: generateLoaders('sass', {
|
|
68
|
+
indentedSyntax: true
|
|
69
|
+
}),
|
|
70
|
+
scss: generateLoaders('sass'),
|
|
71
|
+
stylus: generateLoaders('stylus'),
|
|
72
|
+
styl: generateLoaders('stylus')
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Generate loaders for standalone style files (outside of .vue)
|
|
77
|
+
exports.styleLoaders = function(options) {
|
|
78
|
+
const output = []
|
|
79
|
+
const loaders = exports.cssLoaders(options)
|
|
80
|
+
|
|
81
|
+
for (const extension in loaders) {
|
|
82
|
+
const loader = loaders[extension]
|
|
83
|
+
output.push({
|
|
84
|
+
test: new RegExp('\\.' + extension + '$'),
|
|
85
|
+
use: loader
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return output
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
exports.createNotifierCallback = () => {
|
|
93
|
+
const notifier = require('node-notifier')
|
|
94
|
+
|
|
95
|
+
return (severity, errors) => {
|
|
96
|
+
if (severity !== 'error') return
|
|
97
|
+
|
|
98
|
+
const error = errors[0]
|
|
99
|
+
const filename = error.file && error.file.split('!').pop()
|
|
100
|
+
|
|
101
|
+
notifier.notify({
|
|
102
|
+
title: packageConfig.name,
|
|
103
|
+
message: severity + ': ' + error.name,
|
|
104
|
+
subtitle: filename || '',
|
|
105
|
+
icon: path.join(__dirname, 'logo.png')
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
//You can set the vue-loader configuration by yourself.
|
|
5
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
//You can set the vue-loader configuration by yourself.
|
|
5
|
+
}
|