expressa 2.0.16 → 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.
Files changed (208) hide show
  1. package/.circleci/config.yml +21 -21
  2. package/.eslintrc.json +29 -29
  3. package/LICENSE +21 -21
  4. package/README.md +137 -137
  5. package/auth/index.js +76 -76
  6. package/auth/jwt.js +31 -31
  7. package/controllers/collections.js +260 -258
  8. package/controllers/install.js +105 -105
  9. package/controllers/status.js +43 -43
  10. package/controllers/users.js +52 -52
  11. package/cypress/fixtures/example.json +4 -4
  12. package/cypress/integration/0_install_spec.js +8 -8
  13. package/cypress/integration/custom_collections.js +28 -28
  14. package/cypress/integration/home.js +9 -9
  15. package/cypress/integration/settings.js +34 -34
  16. package/cypress/integration/users.js +61 -61
  17. package/cypress/plugins/index.js +17 -17
  18. package/cypress/screenshots/users.js/User Management -- Can log in as non-admin, but cannot create users (failed).png +0 -0
  19. package/cypress/support/commands.js +54 -54
  20. package/cypress/support/index.js +20 -20
  21. package/cypress/support/util.js +10 -10
  22. package/cypress.json +4 -4
  23. package/db/cached.js +40 -40
  24. package/db/file.js +112 -112
  25. package/db/memory.js +79 -79
  26. package/db/mongo.js +86 -86
  27. package/db/postgres.js +93 -93
  28. package/doc/authentication.md +38 -38
  29. package/doc/automatic-fields.md +12 -12
  30. package/doc/blogexample.md +16 -16
  31. package/doc/custom-endpoints.md +20 -20
  32. package/doc/database.md +23 -23
  33. package/doc/development.md +33 -33
  34. package/doc/listeners.md +103 -103
  35. package/doc/modules.md +8 -8
  36. package/doc/permissions.md +14 -14
  37. package/doc/relationships.md +65 -65
  38. package/doc/testing.md +47 -47
  39. package/doc/uploading-files.md +53 -53
  40. package/index.js +297 -297
  41. package/listeners.js +65 -65
  42. package/listeners_collection_permissions.js +29 -29
  43. package/listeners_users.js +96 -96
  44. package/listeners_validation.js +43 -43
  45. package/middleware/logging.js +30 -30
  46. package/middleware/permissions.js +41 -41
  47. package/modules/access_keys/access_keys.js +32 -32
  48. package/modules/admin/.babelrc +20 -12
  49. package/modules/admin/.editorconfig +14 -14
  50. package/modules/admin/.eslintignore +5 -5
  51. package/modules/admin/.eslintrc.js +197 -197
  52. package/modules/admin/.postcssrc.js +10 -10
  53. package/modules/admin/.travis.yml +5 -5
  54. package/modules/admin/LICENSE +21 -21
  55. package/modules/admin/README.md +88 -88
  56. package/modules/admin/build/build.js +45 -45
  57. package/modules/admin/build/check-versions.js +64 -64
  58. package/modules/admin/build/utils.js +108 -108
  59. package/modules/admin/build/vue-loader.conf.js +5 -5
  60. package/modules/admin/build/webpack.base.conf.js +112 -108
  61. package/modules/admin/build/webpack.dev.conf.js +95 -95
  62. package/modules/admin/build/webpack.prod.conf.js +112 -171
  63. package/modules/admin/config/dev.env.js +8 -8
  64. package/modules/admin/config/index.js +86 -86
  65. package/modules/admin/config/prod.env.js +5 -5
  66. package/modules/admin/dist/favicon.ico +0 -0
  67. package/modules/admin/dist/index.html +1 -0
  68. package/modules/admin/dist/index.html.gz +0 -0
  69. package/modules/admin/dist/static/css/app.9dd57eea.css +1 -0
  70. package/modules/admin/dist/static/css/app.9dd57eea.css.gz +0 -0
  71. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css +1 -0
  72. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css.gz +0 -0
  73. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css +1 -0
  74. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css.gz +0 -0
  75. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css +1 -0
  76. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css.gz +0 -0
  77. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css +1 -0
  78. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css.gz +0 -0
  79. package/modules/admin/dist/static/css/chunk-7291.13514e45.css +0 -0
  80. package/modules/admin/dist/static/css/chunk-7291.13514e45.css.gz +0 -0
  81. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css +1 -0
  82. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css.gz +0 -0
  83. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css +1 -0
  84. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css.gz +0 -0
  85. package/modules/admin/dist/static/css/chunk-b423.5f239333.css +0 -0
  86. package/modules/admin/dist/static/css/chunk-b423.5f239333.css.gz +0 -0
  87. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css +1 -0
  88. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css.gz +0 -0
  89. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css +1 -0
  90. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css.gz +0 -0
  91. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css +1 -0
  92. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css.gz +0 -0
  93. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css +1 -0
  94. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css.gz +0 -0
  95. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css +14 -0
  96. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css.gz +0 -0
  97. package/modules/admin/dist/static/fonts/element-icons.6f0a763.ttf +0 -0
  98. package/modules/admin/dist/static/img/404.a57b6f3.png +0 -0
  99. package/modules/admin/dist/static/js/app.e9461593.js +1 -0
  100. package/modules/admin/dist/static/js/app.e9461593.js.gz +0 -0
  101. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js +2 -0
  102. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt +13 -0
  103. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt.gz +0 -0
  104. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.gz +0 -0
  105. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js +1 -0
  106. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js.gz +0 -0
  107. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js +1 -0
  108. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js.gz +0 -0
  109. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js +1 -0
  110. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js.gz +0 -0
  111. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js +1 -0
  112. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js.gz +0 -0
  113. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js +1 -0
  114. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js.gz +0 -0
  115. package/modules/admin/dist/static/js/chunk-7291.590524e9.js +1 -0
  116. package/modules/admin/dist/static/js/chunk-7291.590524e9.js.gz +0 -0
  117. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js +1 -0
  118. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js.gz +0 -0
  119. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js +1 -0
  120. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js.gz +0 -0
  121. package/modules/admin/dist/static/js/chunk-b423.387c504c.js +1 -0
  122. package/modules/admin/dist/static/js/chunk-b423.387c504c.js.gz +0 -0
  123. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js +1 -0
  124. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js.gz +0 -0
  125. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js +1 -0
  126. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js.gz +0 -0
  127. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js +1 -0
  128. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js.gz +0 -0
  129. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js +1 -0
  130. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js.gz +0 -0
  131. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js +1 -0
  132. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js.gz +0 -0
  133. package/modules/admin/dist/static/js/chunk-libs.06c38828.js +2 -0
  134. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt +126 -0
  135. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt.gz +0 -0
  136. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.gz +0 -0
  137. package/modules/admin/index.html +16 -16
  138. package/modules/admin/package.json +101 -98
  139. package/modules/admin/src/App.vue +11 -11
  140. package/modules/admin/src/api/login.js +26 -26
  141. package/modules/admin/src/api/table.js +9 -9
  142. package/modules/admin/src/components/Breadcrumb/index.vue +79 -79
  143. package/modules/admin/src/components/Hamburger/index.vue +62 -62
  144. package/modules/admin/src/components/JSONEditor.vue +180 -180
  145. package/modules/admin/src/components/SvgIcon/index.vue +43 -43
  146. package/modules/admin/src/icons/index.js +9 -9
  147. package/modules/admin/src/icons/svgo.yml +22 -22
  148. package/modules/admin/src/main.js +42 -41
  149. package/modules/admin/src/permission.js +49 -49
  150. package/modules/admin/src/router/index.js +200 -200
  151. package/modules/admin/src/store/getters.js +11 -11
  152. package/modules/admin/src/store/index.js +17 -17
  153. package/modules/admin/src/store/modules/app.js +43 -43
  154. package/modules/admin/src/store/modules/user.js +104 -104
  155. package/modules/admin/src/styles/element-ui.scss +29 -29
  156. package/modules/admin/src/styles/index.scss +78 -78
  157. package/modules/admin/src/styles/mixin.scss +27 -27
  158. package/modules/admin/src/styles/sidebar.scss +133 -133
  159. package/modules/admin/src/styles/transition.scss +46 -46
  160. package/modules/admin/src/styles/variables.scss +4 -4
  161. package/modules/admin/src/utils/auth.js +15 -15
  162. package/modules/admin/src/utils/index.js +74 -74
  163. package/modules/admin/src/utils/request.js +48 -48
  164. package/modules/admin/src/utils/validate.js +31 -31
  165. package/modules/admin/src/views/404.vue +235 -235
  166. package/modules/admin/src/views/Dev.vue +33 -33
  167. package/modules/admin/src/views/EditDocument.vue +116 -116
  168. package/modules/admin/src/views/Endpoints.vue +279 -279
  169. package/modules/admin/src/views/Home.vue +84 -84
  170. package/modules/admin/src/views/Install.vue +79 -79
  171. package/modules/admin/src/views/ListDocuments.vue +72 -72
  172. package/modules/admin/src/views/ListDocuments2.vue +462 -462
  173. package/modules/admin/src/views/ManageListeners.vue +67 -67
  174. package/modules/admin/src/views/ManageMiddleware.vue +43 -43
  175. package/modules/admin/src/views/ManagePermissions.vue +75 -75
  176. package/modules/admin/src/views/ViewRequest.vue +77 -77
  177. package/modules/admin/src/views/form/index.vue +91 -91
  178. package/modules/admin/src/views/layout/Layout.vue +69 -69
  179. package/modules/admin/src/views/layout/components/AppMain.vue +41 -41
  180. package/modules/admin/src/views/layout/components/Navbar.vue +97 -97
  181. package/modules/admin/src/views/layout/components/Sidebar/Item.vue +29 -29
  182. package/modules/admin/src/views/layout/components/Sidebar/Link.vue +39 -39
  183. package/modules/admin/src/views/layout/components/Sidebar/SidebarItem.vue +103 -103
  184. package/modules/admin/src/views/layout/components/Sidebar/index.vue +62 -62
  185. package/modules/admin/src/views/layout/components/index.js +3 -3
  186. package/modules/admin/src/views/layout/mixin/ResizeHandler.js +41 -41
  187. package/modules/admin/src/views/login/index.vue +195 -195
  188. package/modules/admin/src/views/tree/index.vue +77 -77
  189. package/modules/collections/collections.js +39 -39
  190. package/modules/core/core.js +197 -197
  191. package/modules/logging/logging.js +88 -88
  192. package/modules/permissions/permissions.js +106 -106
  193. package/package.json +59 -59
  194. package/scripts/expressa +12 -12
  195. package/scripts/run_cypress_tests.sh +5 -5
  196. package/scripts/run_db_tests.sh +8 -8
  197. package/test/0-install.js +96 -96
  198. package/test/collections.js +431 -431
  199. package/test/collections.querying.js +288 -289
  200. package/test/db.js +258 -258
  201. package/test/db.strings.js +73 -73
  202. package/test/db.updating.js +144 -144
  203. package/test/logging.js +29 -29
  204. package/test/test.js +93 -94
  205. package/test/testserver.js +17 -17
  206. package/test/testutils.js +136 -136
  207. package/test/users.js +425 -425
  208. package/util.js +522 -522
@@ -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
- ![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif)
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
- ![demo](https://panjiachen.github.io/images/element-cdn.png)
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
+ ![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif)
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
+ ![demo](https://panjiachen.github.io/images/element-cdn.png)
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
+ }