dpzvc-ui 1.0.0 → 1.1.0

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 (90) hide show
  1. package/README.md +1 -1
  2. package/build-style.js +0 -24
  3. package/dist/dpzvc.js +9004 -13095
  4. package/dist/dpzvc.js.map +1 -0
  5. package/dist/dpzvc.min.js +2 -0
  6. package/dist/dpzvc.min.js.map +1 -0
  7. package/dist-prod/968.b06f8ff038ced2ac25a8.js +3 -0
  8. package/dist-prod/968.b06f8ff038ced2ac25a8.js.LICENSE.txt +5 -0
  9. package/dist-prod/968.b06f8ff038ced2ac25a8.js.map +1 -0
  10. package/dist-prod/actionsheet.6c90edde5704622a1342.chunk.js +2 -0
  11. package/dist-prod/actionsheet.6c90edde5704622a1342.chunk.js.map +1 -0
  12. package/dist-prod/badge.c84c021f3e486ef7d942.chunk.js +2 -0
  13. package/dist-prod/badge.c84c021f3e486ef7d942.chunk.js.map +1 -0
  14. package/dist-prod/button.367cc8c72a5fe6ab23f9.chunk.js +2 -0
  15. package/dist-prod/button.367cc8c72a5fe6ab23f9.chunk.js.map +1 -0
  16. package/dist-prod/card.9408612c4388b6dfa16c.chunk.js +2 -0
  17. package/dist-prod/card.9408612c4388b6dfa16c.chunk.js.map +1 -0
  18. package/dist-prod/cell.9a4993caa97ef40ff5c1.chunk.js +2 -0
  19. package/dist-prod/cell.9a4993caa97ef40ff5c1.chunk.js.map +1 -0
  20. package/dist-prod/cellswipe.2f66e4563a8b0ea4e66a.chunk.js +2 -0
  21. package/dist-prod/cellswipe.2f66e4563a8b0ea4e66a.chunk.js.map +1 -0
  22. package/dist-prod/checkbox.bfb070917fbd916b9246.chunk.js +2 -0
  23. package/dist-prod/checkbox.bfb070917fbd916b9246.chunk.js.map +1 -0
  24. package/dist-prod/guide.92857dbbd3214f172073.chunk.js +2 -0
  25. package/dist-prod/guide.92857dbbd3214f172073.chunk.js.map +1 -0
  26. package/dist-prod/header.ad70269632b1900dc1f0.chunk.js +2 -0
  27. package/dist-prod/header.ad70269632b1900dc1f0.chunk.js.map +1 -0
  28. package/dist-prod/index.html +19 -26
  29. package/dist-prod/indicator.791ff82f539499ebcc6b.chunk.js +2 -0
  30. package/dist-prod/indicator.791ff82f539499ebcc6b.chunk.js.map +1 -0
  31. package/dist-prod/loadmore.766550bbcff49be9ca23.chunk.js +2 -0
  32. package/dist-prod/loadmore.766550bbcff49be9ca23.chunk.js.map +1 -0
  33. package/dist-prod/main.87546d094b4cc2de2d01.js +2 -0
  34. package/dist-prod/main.87546d094b4cc2de2d01.js.map +1 -0
  35. package/dist-prod/main.c3a7cb52315b8816357b.js +2 -0
  36. package/dist-prod/main.c3a7cb52315b8816357b.js.map +1 -0
  37. package/dist-prod/message.878a621e560c57ca9f90.chunk.js +2 -0
  38. package/dist-prod/message.878a621e560c57ca9f90.chunk.js.map +1 -0
  39. package/dist-prod/modal.e4087ee82601de76b61d.chunk.js +2 -0
  40. package/dist-prod/modal.e4087ee82601de76b61d.chunk.js.map +1 -0
  41. package/dist-prod/picker.3cfdf594676698f7ef0b.chunk.js +2 -0
  42. package/dist-prod/picker.3cfdf594676698f7ef0b.chunk.js.map +1 -0
  43. package/dist-prod/popup.f46d0b3c57b2f2d0dfe3.chunk.js +2 -0
  44. package/dist-prod/popup.f46d0b3c57b2f2d0dfe3.chunk.js.map +1 -0
  45. package/dist-prod/progress.dd5c95445a81a94ae446.chunk.js +2 -0
  46. package/dist-prod/progress.dd5c95445a81a94ae446.chunk.js.map +1 -0
  47. package/dist-prod/prompt.793312afaee597d3e887.chunk.js +2 -0
  48. package/dist-prod/prompt.793312afaee597d3e887.chunk.js.map +1 -0
  49. package/dist-prod/radiobox.f684060ebfc8df084d9c.chunk.js +2 -0
  50. package/dist-prod/radiobox.f684060ebfc8df084d9c.chunk.js.map +1 -0
  51. package/dist-prod/rater.18672a3b68842b5ec0ae.chunk.js +2 -0
  52. package/dist-prod/rater.18672a3b68842b5ec0ae.chunk.js.map +1 -0
  53. package/dist-prod/slidebar.58eb1b07a6995df3fc47.chunk.js +2 -0
  54. package/dist-prod/slidebar.58eb1b07a6995df3fc47.chunk.js.map +1 -0
  55. package/dist-prod/spinner.2c686ac402a1e1b29270.chunk.js +2 -0
  56. package/dist-prod/spinner.2c686ac402a1e1b29270.chunk.js.map +1 -0
  57. package/dist-prod/swipe.dcc1ebcc206dae26a67e.chunk.js +2 -0
  58. package/dist-prod/swipe.dcc1ebcc206dae26a67e.chunk.js.map +1 -0
  59. package/dist-prod/switchbar.91b45e05df73e20227ce.chunk.js +2 -0
  60. package/dist-prod/switchbar.91b45e05df73e20227ce.chunk.js.map +1 -0
  61. package/dist-prod/tab.b351fd11783b6de80246.chunk.js +2 -0
  62. package/dist-prod/tab.b351fd11783b6de80246.chunk.js.map +1 -0
  63. package/dist-prod/text.c41d6ba9644f7037d1e3.chunk.js +2 -0
  64. package/dist-prod/text.c41d6ba9644f7037d1e3.chunk.js.map +1 -0
  65. package/dist-prod/totop.cb15a38b541189094b32.chunk.js +2 -0
  66. package/dist-prod/totop.cb15a38b541189094b32.chunk.js.map +1 -0
  67. package/dist-prod/upload.e953d4a54b0a230de7d6.chunk.js +2 -0
  68. package/dist-prod/upload.e953d4a54b0a230de7d6.chunk.js.map +1 -0
  69. package/dist-prod/vendors.5b7cff021a01dbbbcdf2.js +3 -0
  70. package/dist-prod/vendors.5b7cff021a01dbbbcdf2.js.LICENSE.txt +5 -0
  71. package/dist-prod/vendors.5b7cff021a01dbbbcdf2.js.map +1 -0
  72. package/package.json +32 -27
  73. package/postcss.config.js +5 -0
  74. package/src/components/app.vue +1 -1
  75. package/src/components/upload/upload.vue +2 -1
  76. package/src/config/config.js +1 -1
  77. package/src/index.js +6 -5
  78. package/src/lib/MegaPixImage.js +59 -154
  79. package/src/main.js +18 -60
  80. package/src/router.js +30 -223
  81. package/src/styles/utils/nowrap.less +1 -1
  82. package/src/template/index.ejs +34 -20
  83. package/src/utils/util.js +1 -1
  84. package/src/views/Header.vue +6 -6
  85. package/src/views/Progress.vue +2 -2
  86. package/webpack.base.config.js +77 -70
  87. package/webpack.dev.config.js +39 -66
  88. package/webpack.dist.dev.config.js +45 -40
  89. package/webpack.dist.prod.config.js +54 -46
  90. package/webpack.prod.config.js +41 -70
package/src/router.js CHANGED
@@ -1,229 +1,36 @@
1
1
  /**
2
- * Created by lcfevr on 16/8/22.
2
+ * 路由配置 - 按需加载版本
3
3
  */
4
4
  const routers = [
5
- {
6
- path:'/',
7
- redirect:'/guide'
8
- },
5
+ { path: '/', redirect: '/guide' },
9
6
 
10
- {
11
- path:'/guide',
12
- name:'guide',
13
- component:require('./views/guide.vue'),
14
- meta:{
15
- title:'guide'
16
- }
17
- },
18
- {
19
- path:'/ActionSheet',
20
- name:'ActionSheet',
21
- component:require('./views/ActionSheet.vue'),
22
- meta:{
23
- title:'ActionSheet'
24
- }
25
- },
26
- {
27
- path:'/Badge',
28
- name:'Badge',
29
- component:require('./views/Badge.vue'),
30
- meta:{
31
- title:'Badge'
32
- }
33
- },
34
- {
35
- path:'/Button',
36
- name:'Button',
37
- component:require('./views/Button.vue'),
38
- meta:{
39
- title:'Button'
40
- }
41
- },
42
- {
43
- path:'/Card',
44
- name:'Card',
45
- component:require('./views/Card.vue'),
46
- meta:{
47
- title:'Card'
48
- }
49
- },
50
- {
51
- path:'/Cell',
52
- name:'Cell',
53
- component:require('./views/Cell.vue'),
54
- meta:{
55
- title:'Cell'
56
- }
57
- },
58
- {
59
- path:'/CellSwipe',
60
- name:'CellSwipe',
61
- component:require('./views/CellSwipe.vue'),
62
- meta:{
63
- title:'CellSwipe'
64
- }
65
- },
66
- {
67
- path:'/CheckBox',
68
- name:'CheckBox',
69
- component:require('./views/CheckBox.vue'),
70
- meta:{
71
- title:'CheckBox'
72
- }
73
- },
74
- {
75
- path:'/Header',
76
- name:'Header',
77
- component:require('./views/Header.vue'),
78
- meta:{
79
- title:'Header'
80
- }
81
- },
82
- {
83
- path:'/Indicator',
84
- name:'Indicator',
85
- component:require('./views/Indicator.vue'),
86
- meta:{
87
- title:'Indicator'
88
- }
89
- },
90
- {
91
- path:'/LoadMore',
92
- name:'LoadMore',
93
- component:require('./views/LoadMore.vue'),
94
- meta:{
95
- title:'LoadMore'
96
- }
97
- },
98
- {
99
- path:'/Message',
100
- name:'Message',
101
- component:require('./views/Message.vue'),
102
- meta:{
103
- title:'Message'
104
- }
105
- },
106
- {
107
- path:'/Modal',
108
- name:'Modal',
109
- component:require('./views/Modal.vue'),
110
- meta:{
111
- title:'Modal'
112
- }
113
- },
114
- {
115
- path:'/Picker',
116
- name:'Picker',
117
- component:require('./views/Picker.vue'),
118
- meta:{
119
- title:'Picker'
120
- }
121
- },
122
- {
123
- path:'/Popup',
124
- name:'Popup',
125
- component:require('./views/Popup.vue'),
126
- meta:{
127
- title:'Popup'
128
- }
129
- },
130
- {
131
- path:'/Progress',
132
- name:'Progress',
133
- component:require('./views/Progress.vue'),
134
- meta:{
135
- title:'Progress'
136
- }
137
- },
138
- {
139
- path:'/Prompt',
140
- name:'Prompt',
141
- component:require('./views/Prompt.vue'),
142
- meta:{
143
- title:'Prompt'
144
- }
145
- },
146
- {
147
- path:'/RadioBox',
148
- name:'RadioBox',
149
- component:require('./views/RadioBox.vue'),
150
- meta:{
151
- title:'RadioBox'
152
- }
153
- },
154
- {
155
- path:'/Rater',
156
- name:'Rater',
157
- component:require('./views/Rater.vue'),
158
- meta:{
159
- title:'Rater'
160
- }
161
- },
162
- {
163
- path:'/SlideBar',
164
- name:'SlideBar',
165
- component:require('./views/SlideBar.vue'),
166
- meta:{
167
- title:'SlideBar'
168
- }
169
- },
170
- {
171
- path:'/Spinner',
172
- name:'Spinner',
173
- component:require('./views/Spinner.vue'),
174
- meta:{
175
- title:'Spinner'
176
- }
177
- },
178
- {
179
- path:'/Swipe',
180
- name:'Swipe',
181
- component:require('./views/Swipe.vue'),
182
- meta:{
183
- title:'Swipe'
184
- }
185
- },
186
- {
187
- path:'/SwitchBar',
188
- name:'SwitchBar',
189
- component:require('./views/SwitchBar.vue'),
190
- meta:{
191
- title:'SwitchBar'
192
- }
193
- },
194
- {
195
- path:'/Tab',
196
- name:'Tab',
197
- component:require('./views/Tab.vue'),
198
- meta:{
199
- title:'Tab'
200
- }
201
- },
202
- {
203
- path:'/Text',
204
- name:'Text',
205
- component:require('./views/Text.vue'),
206
- meta:{
207
- title:'Text'
208
- }
209
- },
210
- {
211
- path:'/ToTop',
212
- name:'ToTop',
213
- component:require('./views/ToTop.vue'),
214
- meta:{
215
- title:'ToTop'
216
- }
217
- },
218
- {
219
- path:'/Upload',
220
- name:'Upload',
221
- component:require('./views/Upload.vue'),
222
- meta:{
223
- title:'Upload'
224
- }
225
- },
7
+ { path: '/guide', name: 'guide', component: () => import(/* webpackChunkName: "guide" */ './views/guide.vue'), meta: { title: 'guide' } },
8
+ { path: '/ActionSheet', name: 'ActionSheet', component: () => import(/* webpackChunkName: "actionsheet" */ './views/ActionSheet.vue'), meta: { title: 'ActionSheet' } },
9
+ { path: '/Badge', name: 'Badge', component: () => import(/* webpackChunkName: "badge" */ './views/Badge.vue'), meta: { title: 'Badge' } },
10
+ { path: '/Button', name: 'Button', component: () => import(/* webpackChunkName: "button" */ './views/Button.vue'), meta: { title: 'Button' } },
11
+ { path: '/Card', name: 'Card', component: () => import(/* webpackChunkName: "card" */ './views/Card.vue'), meta: { title: 'Card' } },
12
+ { path: '/Cell', name: 'Cell', component: () => import(/* webpackChunkName: "cell" */ './views/Cell.vue'), meta: { title: 'Cell' } },
13
+ { path: '/CellSwipe', name: 'CellSwipe', component: () => import(/* webpackChunkName: "cellswipe" */ './views/CellSwipe.vue'), meta: { title: 'CellSwipe' } },
14
+ { path: '/CheckBox', name: 'CheckBox', component: () => import(/* webpackChunkName: "checkbox" */ './views/CheckBox.vue'), meta: { title: 'CheckBox' } },
15
+ { path: '/Header', name: 'Header', component: () => import(/* webpackChunkName: "header" */ './views/Header.vue'), meta: { title: 'Header' } },
16
+ { path: '/Indicator', name: 'Indicator', component: () => import(/* webpackChunkName: "indicator" */ './views/Indicator.vue'), meta: { title: 'Indicator' } },
17
+ { path: '/LoadMore', name: 'LoadMore', component: () => import(/* webpackChunkName: "loadmore" */ './views/LoadMore.vue'), meta: { title: 'LoadMore' } },
18
+ { path: '/Message', name: 'Message', component: () => import(/* webpackChunkName: "message" */ './views/Message.vue'), meta: { title: 'Message' } },
19
+ { path: '/Modal', name: 'Modal', component: () => import(/* webpackChunkName: "modal" */ './views/Modal.vue'), meta: { title: 'Modal' } },
20
+ { path: '/Picker', name: 'Picker', component: () => import(/* webpackChunkName: "picker" */ './views/Picker.vue'), meta: { title: 'Picker' } },
21
+ { path: '/Popup', name: 'Popup', component: () => import(/* webpackChunkName: "popup" */ './views/Popup.vue'), meta: { title: 'Popup' } },
22
+ { path: '/Progress', name: 'Progress', component: () => import(/* webpackChunkName: "progress" */ './views/Progress.vue'), meta: { title: 'Progress' } },
23
+ { path: '/Prompt', name: 'Prompt', component: () => import(/* webpackChunkName: "prompt" */ './views/Prompt.vue'), meta: { title: 'Prompt' } },
24
+ { path: '/RadioBox', name: 'RadioBox', component: () => import(/* webpackChunkName: "radiobox" */ './views/RadioBox.vue'), meta: { title: 'RadioBox' } },
25
+ { path: '/Rater', name: 'Rater', component: () => import(/* webpackChunkName: "rater" */ './views/Rater.vue'), meta: { title: 'Rater' } },
26
+ { path: '/SlideBar', name: 'SlideBar', component: () => import(/* webpackChunkName: "slidebar" */ './views/SlideBar.vue'), meta: { title: 'SlideBar' } },
27
+ { path: '/Spinner', name: 'Spinner', component: () => import(/* webpackChunkName: "spinner" */ './views/Spinner.vue'), meta: { title: 'Spinner' } },
28
+ { path: '/Swipe', name: 'Swipe', component: () => import(/* webpackChunkName: "swipe" */ './views/Swipe.vue'), meta: { title: 'Swipe' } },
29
+ { path: '/SwitchBar', name: 'SwitchBar', component: () => import(/* webpackChunkName: "switchbar" */ './views/SwitchBar.vue'), meta: { title: 'SwitchBar' } },
30
+ { path: '/Tab', name: 'Tab', component: () => import(/* webpackChunkName: "tab" */ './views/Tab.vue'), meta: { title: 'Tab' } },
31
+ { path: '/Text', name: 'Text', component: () => import(/* webpackChunkName: "text" */ './views/Text.vue'), meta: { title: 'Text' } },
32
+ { path: '/ToTop', name: 'ToTop', component: () => import(/* webpackChunkName: "totop" */ './views/ToTop.vue'), meta: { title: 'ToTop' } },
33
+ { path: '/Upload', name: 'Upload', component: () => import(/* webpackChunkName: "upload" */ './views/Upload.vue'), meta: { title: 'Upload' } },
34
+ ];
226
35
 
227
-
228
- ]
229
36
  export default routers;
@@ -7,7 +7,7 @@
7
7
 
8
8
  .dpzvc-nowrap(@n, @i: 1) when (@i <=@n) {
9
9
  .dpzvc-nowrap-@{i} {
10
- .dpzvc-nowrap;
10
+ .dpzvc-nowrap();
11
11
  display: -webkit-box;
12
12
  -webkit-box-orient: vertical;
13
13
  -webkit-line-clamp: @i;
@@ -1,26 +1,40 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="zh-CN">
3
3
  <head>
4
- <title>丁平中vue2.x组件库使用预览</title>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
4
+ <meta charset="UTF-8">
5
+ <title>丁平中vc移动端组件</title>
6
+ <meta name="viewport"
7
+ content="width=device-width,
8
+ initial-scale=1.0,
9
+ maximum-scale=1.0,
10
+ minimum-scale=1.0">
11
+ <style>
12
+ html, body {
13
+ width: 100%;
14
+ height: 100%;
15
+ margin: 0;
16
+ }
17
+ </style>
7
18
  </head>
8
19
  <body>
9
- <div id="app"></div>
10
- <script>
11
- (function (doc, win) {
12
- var docEl = doc.documentElement,
13
- resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
14
- recalc = function () {
15
- var clientWidth = docEl.clientWidth;
16
- if (!clientWidth) return;
17
- docEl.style.fontSize = 100 * (clientWidth / 375) + 'px';
18
- };
19
- // Abort if browser does not support addEventListener
20
- if (!doc.addEventListener) return;
21
- win.addEventListener(resizeEvt, recalc, false);
22
- doc.addEventListener('DOMContentLoaded', recalc, false);
23
- })(document, window);
24
- </script>
20
+ <div id="app"></div>
21
+
22
+ <script>
23
+ (function (doc, win) {
24
+ var docEl = doc.documentElement;
25
+
26
+ function recalc() {
27
+ var clientWidth = docEl.clientWidth;
28
+ if (!clientWidth) return;
29
+
30
+ if (clientWidth > 750) clientWidth = 750;
31
+
32
+ docEl.style.fontSize = 100 * (clientWidth / 375) + 'px';
33
+ }
34
+
35
+ win.addEventListener('resize', recalc);
36
+ doc.addEventListener('DOMContentLoaded', recalc);
37
+ })(document, window);
38
+ </script>
25
39
  </body>
26
- </html>
40
+ </html>
package/src/utils/util.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Created by lcfevr on 16/7/18.
2
+ * Created by yishide on 16/7/18.
3
3
  */
4
4
  import Config from '../config/config'
5
5
  //
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div class="Header">
3
3
  <div class="item">
4
- <Header title="Header" :fixed="fixed"></Header>
4
+ <DpHeader title="Header" :fixed="fixed"></DpHeader>
5
5
  </div>
6
6
  <div class="item">
7
- <Header title="Header" :fixed="fixed">
7
+ <DpHeader title="Header" :fixed="fixed">
8
8
  <span slot="right" @click="share">分享</span>
9
- </Header>
9
+ </DpHeader>
10
10
  </div>
11
11
  <div class="item">
12
- <Header title="Header" :fixed="fixed">
12
+ <DpHeader title="Header" :fixed="fixed">
13
13
  <span slot="left">返回</span>
14
14
  <span slot="right" @click="share">分享</span>
15
- </Header>
15
+ </DpHeader>
16
16
  </div>
17
17
  </div>
18
18
  </template>
@@ -20,7 +20,7 @@
20
20
  <script>
21
21
 
22
22
  export default {
23
- name: "header",
23
+ name: "dp-header",
24
24
 
25
25
  data(){
26
26
  return {
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <div class="Progress">
3
- <Progress v-model="progress" :barHeight="barHeight"></Progress>
3
+ <DpProgress v-model="progress" :barHeight="barHeight"></DpProgress>
4
4
  </div>
5
5
  </template>
6
6
 
7
7
  <script>
8
8
  export default {
9
- name: "progress",
9
+ name: "dp-progress",
10
10
  data(){
11
11
  return {
12
12
  progress:0,
@@ -1,74 +1,81 @@
1
- /**
2
- * 公共配置
3
- */
4
- var path = require('path');
5
- function resolve (dir) {
6
- return path.join(__dirname, '.', dir)
7
- }
1
+ const path = require('path');
2
+ const { VueLoaderPlugin } = require('vue-loader');
8
3
 
9
4
  module.exports = {
10
- // 加载器
11
- module: {
12
- // https://doc.webpack-china.org/guides/migrating/#module-loaders-module-rules
13
- rules: [
14
- {
15
- // https://vue-loader.vuejs.org/en/configurations/extract-css.html
16
- test: /\.vue$/,
17
- loader: 'vue-loader',
18
- options: {
19
- loaders: {
20
- css: 'vue-style-loader!css-loader',
21
- less: 'vue-style-loader!css-loader!less-loader'
22
- },
23
- postLoaders: {
24
- html: 'babel-loader'
25
- }
26
- }
27
- },
28
- {
29
- test: /\.js$/,
30
- query:{
31
- presets: ['es2015','stage-0']
32
- },
33
- loader: 'babel-loader',
34
- exclude: /node_modules/
35
- },
36
- {
37
- test: /\.css$/,
38
- use: [
39
- 'style-loader',
40
- 'css-loader',
41
- 'autoprefixer-loader'
42
- ]
43
- },
44
- {
45
- test: /\.less$/,
46
- use: [
47
- 'style-loader',
48
- 'css-loader',
49
- 'less-loader'
50
- ]
51
- },
52
- {
53
- test: /\.scss$/,
54
- use: [
55
- 'style-loader',
56
- 'css-loader',
57
- 'sass-loader?sourceMap'
58
- ]
59
- },
60
- { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=8192'},
61
- { test: /\.(html|tpl)$/, loader: 'html-loader' }
5
+ entry: {
6
+ main: path.resolve(__dirname, 'src/main.js')
7
+ },
8
+ output: {
9
+ path: path.resolve(__dirname, 'dist'),
10
+ filename: '[name].[contenthash:8].js', // webpack5 推荐使用 contenthash
11
+ publicPath: '/'
12
+ },
13
+ resolve: {
14
+ extensions: ['.js', '.vue', '.json'],
15
+ alias: {
16
+ 'vue$': 'vue/dist/vue.esm.js',
17
+ '@': path.resolve(__dirname, 'src')
18
+ }
19
+ },
20
+ module: {
21
+ rules: [
22
+ // Vue 文件
23
+ {
24
+ test: /\.vue$/,
25
+ loader: 'vue-loader'
26
+ },
27
+ // JS 文件
28
+ {
29
+ test: /\.js$/,
30
+ exclude: /node_modules/,
31
+ use: 'babel-loader'
32
+ },
33
+ // CSS 文件
34
+ {
35
+ test: /\.css$/,
36
+ use: [
37
+ 'vue-style-loader',
38
+ {
39
+ loader: 'css-loader',
40
+ options: {
41
+ importLoaders: 1
42
+ }
43
+ },
44
+ 'postcss-loader'
62
45
  ]
63
- },
64
-
65
-
66
-
67
- resolve: {
68
- extensions: ['.js', '.vue'],
69
- alias: {
70
- 'vue': 'vue/dist/vue.esm.js',
71
- '@': resolve('src/components')
46
+ },
47
+ // LESS 文件
48
+ {
49
+ test: /\.less$/,
50
+ use: [
51
+ 'vue-style-loader',
52
+ {
53
+ loader: 'css-loader',
54
+ options: {
55
+ importLoaders: 2
56
+ }
57
+ },
58
+ 'postcss-loader',
59
+ 'less-loader'
60
+ ]
61
+ },
62
+ // 图片、字体等资源
63
+ {
64
+ test: /\.(png|jpe?g|gif|svg|eot|ttf|woff2?)$/,
65
+ type: 'asset', // webpack5 新资源模块
66
+ parser: {
67
+ dataUrlCondition: {
68
+ maxSize: 10 * 1024 // 10kb
69
+ }
70
+ },
71
+ generator: {
72
+ filename: 'assets/[name].[hash:7][ext]'
72
73
  }
73
- }
74
- };
74
+ }
75
+ ]
76
+ },
77
+ plugins: [
78
+ new VueLoaderPlugin()
79
+ ],
80
+ devtool: 'source-map'
81
+ };
@@ -1,67 +1,40 @@
1
- /**
2
- * 本地预览
3
- */
4
-
5
- var path = require('path');
6
- var fs = require('fs');
7
- var webpack = require('webpack');
8
- // var ExtractTextPlugin = require('extract-text-webpack-plugin');
9
- var HtmlWebpackPlugin = require('html-webpack-plugin');
10
- var merge = require('webpack-merge');
11
- var webpackBaseConfig = require('./webpack.base.config.js');
12
- var ExtractTextPlugin = require('extract-text-webpack-plugin');
13
- var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
14
-
15
-
16
- process.env.NODE_ENV = '"development"'
17
- module.exports = merge(webpackBaseConfig, {
18
- // 入口
19
- entry: {
20
- main: './src/main',
21
- vendors: ['vue', 'vue-router']
22
- },
23
- // 输出
24
- output: {
25
- path:path.join(__dirname, './example'),
26
- publicPath: '',
27
- filename: '[name].js',
28
- chunkFilename: '[name].chunk.js'
29
- },
30
- resolve: {
31
- alias: {
32
- dpzvc: './src/index',
33
- vue: 'vue/dist/vue.js'
34
- }
35
- },
36
- plugins: [
37
-
38
- new webpack.DefinePlugin({
39
- 'process.env.NODE_ENV': process.env.NODE_ENV,
40
- }),
41
- new ExtractTextPlugin({ filename: '[name].css', disable: true, allChunks: true }),
42
- new webpack.optimize.CommonsChunkPlugin({ name: 'vendors', filename: 'vendor.bundle.js' }),
43
- new webpack.LoaderOptionsPlugin({
44
- // test: /\.xxx$/, // may apply this only for some modules
45
- options: {
46
- babel:{
47
- presets: ['es2015','stage-0'],
48
- plugins: ['transform-runtime']
49
- }
50
- }
51
- }),
52
- new HtmlWebpackPlugin({
53
- inject: true,
54
- filename: '../example/index.html',
55
- template: './src/template/index.ejs'
56
- }),
57
- new FriendlyErrorsPlugin()
58
- ],
59
- devServer:{
60
- contentBase:"./",
61
- // host:"192.168.1.101",
62
- // host:"192.168.0.131",
63
- host:"localhost",
64
- port:"3000"
65
- }
66
- });
1
+ const path = require('path');
2
+ const { merge } = require('webpack-merge');
3
+ const webpack = require('webpack');
4
+ const HtmlWebpackPlugin = require('html-webpack-plugin');
5
+ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
6
+ const baseConfig = require('./webpack.base.config.js');
67
7
 
8
+ module.exports = merge(baseConfig, {
9
+ mode: 'development',
10
+ entry: {
11
+ main: path.resolve(__dirname, 'src/main.js'),
12
+ vendors: ['vue', 'vue-router']
13
+ },
14
+ output: {
15
+ path: path.resolve(__dirname, 'dist-dev'),
16
+ filename: '[name].js',
17
+ chunkFilename: '[name].chunk.js',
18
+ publicPath: '/',
19
+ },
20
+ devtool: 'eval-source-map',
21
+ devServer: {
22
+ static: { directory: path.resolve(__dirname, 'dist-dev') },
23
+ compress: true,
24
+ hot: true,
25
+ historyApiFallback: true,
26
+ port: 3000
27
+ },
28
+ plugins: [
29
+ new webpack.HotModuleReplacementPlugin(),
30
+ new HtmlWebpackPlugin({
31
+ template: path.resolve(__dirname,'src/template/index.ejs'),
32
+ inject: true,
33
+ filename: 'index.html'
34
+ }),
35
+ new MiniCssExtractPlugin({
36
+ filename: '[name].css',
37
+ chunkFilename: '[name].chunk.css'
38
+ })
39
+ ]
40
+ });