Skip to content

Commit 87e3dbb

Browse files
committedOct 22, 2017
简单修改项目架构,优化 webpack ,升级依赖版本。
1 parent e655930 commit 87e3dbb

15 files changed

+637
-408
lines changed
 

‎build/vendor_manifest.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name":"vendor_library","content":{"../node_modules/moment/moment.js":{"id":0,"meta":{}},"../node_modules/axios/lib/utils.js":{"id":1,"meta":{}},"../node_modules/process/browser.js":{"id":2,"meta":{}},"../node_modules/webpack/buildin/global.js":{"id":3,"meta":{}},"../node_modules/axios/lib/defaults.js":{"id":4,"meta":{}},"../node_modules/vue/dist/vue.runtime.esm.js":{"id":5,"meta":{"harmonyModule":true},"exports":["default"]},"../node_modules/axios/lib/adapters/xhr.js":{"id":6,"meta":{}},"../node_modules/axios/lib/cancel/Cancel.js":{"id":7,"meta":{}},"../node_modules/axios/lib/cancel/isCancel.js":{"id":8,"meta":{}},"../node_modules/axios/lib/core/createError.js":{"id":9,"meta":{}},"../node_modules/axios/lib/helpers/bind.js":{"id":10,"meta":{}},"../node_modules/moment/locale/af.js":{"id":11,"meta":{}},"../node_modules/moment/locale/ar-dz.js":{"id":12,"meta":{}},"../node_modules/moment/locale/ar-kw.js":{"id":13,"meta":{}},"../node_modules/moment/locale/ar-ly.js":{"id":14,"meta":{}},"../node_modules/moment/locale/ar-ma.js":{"id":15,"meta":{}},"../node_modules/moment/locale/ar-sa.js":{"id":16,"meta":{}},"../node_modules/moment/locale/ar-tn.js":{"id":17,"meta":{}},"../node_modules/moment/locale/ar.js":{"id":18,"meta":{}},"../node_modules/moment/locale/az.js":{"id":19,"meta":{}},"../node_modules/moment/locale/be.js":{"id":20,"meta":{}},"../node_modules/moment/locale/bg.js":{"id":21,"meta":{}},"../node_modules/moment/locale/bm.js":{"id":22,"meta":{}},"../node_modules/moment/locale/bn.js":{"id":23,"meta":{}},"../node_modules/moment/locale/bo.js":{"id":24,"meta":{}},"../node_modules/moment/locale/br.js":{"id":25,"meta":{}},"../node_modules/moment/locale/bs.js":{"id":26,"meta":{}},"../node_modules/moment/locale/ca.js":{"id":27,"meta":{}},"../node_modules/moment/locale/cs.js":{"id":28,"meta":{}},"../node_modules/moment/locale/cv.js":{"id":29,"meta":{}},"../node_modules/moment/locale/cy.js":{"id":30,"meta":{}},"../node_modules/moment/locale/da.js":{"id":31,"meta":{}},"../node_modules/moment/locale/de-at.js":{"id":32,"meta":{}},"../node_modules/moment/locale/de-ch.js":{"id":33,"meta":{}},"../node_modules/moment/locale/de.js":{"id":34,"meta":{}},"../node_modules/moment/locale/dv.js":{"id":35,"meta":{}},"../node_modules/moment/locale/el.js":{"id":36,"meta":{}},"../node_modules/moment/locale/en-au.js":{"id":37,"meta":{}},"../node_modules/moment/locale/en-ca.js":{"id":38,"meta":{}},"../node_modules/moment/locale/en-gb.js":{"id":39,"meta":{}},"../node_modules/moment/locale/en-ie.js":{"id":40,"meta":{}},"../node_modules/moment/locale/en-nz.js":{"id":41,"meta":{}},"../node_modules/moment/locale/eo.js":{"id":42,"meta":{}},"../node_modules/moment/locale/es-do.js":{"id":43,"meta":{}},"../node_modules/moment/locale/es-us.js":{"id":44,"meta":{}},"../node_modules/moment/locale/es.js":{"id":45,"meta":{}},"../node_modules/moment/locale/et.js":{"id":46,"meta":{}},"../node_modules/moment/locale/eu.js":{"id":47,"meta":{}},"../node_modules/moment/locale/fa.js":{"id":48,"meta":{}},"../node_modules/moment/locale/fi.js":{"id":49,"meta":{}},"../node_modules/moment/locale/fo.js":{"id":50,"meta":{}},"../node_modules/moment/locale/fr-ca.js":{"id":51,"meta":{}},"../node_modules/moment/locale/fr-ch.js":{"id":52,"meta":{}},"../node_modules/moment/locale/fr.js":{"id":53,"meta":{}},"../node_modules/moment/locale/fy.js":{"id":54,"meta":{}},"../node_modules/moment/locale/gd.js":{"id":55,"meta":{}},"../node_modules/moment/locale/gl.js":{"id":56,"meta":{}},"../node_modules/moment/locale/gom-latn.js":{"id":57,"meta":{}},"../node_modules/moment/locale/gu.js":{"id":58,"meta":{}},"../node_modules/moment/locale/he.js":{"id":59,"meta":{}},"../node_modules/moment/locale/hi.js":{"id":60,"meta":{}},"../node_modules/moment/locale/hr.js":{"id":61,"meta":{}},"../node_modules/moment/locale/hu.js":{"id":62,"meta":{}},"../node_modules/moment/locale/hy-am.js":{"id":63,"meta":{}},"../node_modules/moment/locale/id.js":{"id":64,"meta":{}},"../node_modules/moment/locale/is.js":{"id":65,"meta":{}},"../node_modules/moment/locale/it.js":{"id":66,"meta":{}},"../node_modules/moment/locale/ja.js":{"id":67,"meta":{}},"../node_modules/moment/locale/jv.js":{"id":68,"meta":{}},"../node_modules/moment/locale/ka.js":{"id":69,"meta":{}},"../node_modules/moment/locale/kk.js":{"id":70,"meta":{}},"../node_modules/moment/locale/km.js":{"id":71,"meta":{}},"../node_modules/moment/locale/kn.js":{"id":72,"meta":{}},"../node_modules/moment/locale/ko.js":{"id":73,"meta":{}},"../node_modules/moment/locale/ky.js":{"id":74,"meta":{}},"../node_modules/moment/locale/lb.js":{"id":75,"meta":{}},"../node_modules/moment/locale/lo.js":{"id":76,"meta":{}},"../node_modules/moment/locale/lt.js":{"id":77,"meta":{}},"../node_modules/moment/locale/lv.js":{"id":78,"meta":{}},"../node_modules/moment/locale/me.js":{"id":79,"meta":{}},"../node_modules/moment/locale/mi.js":{"id":80,"meta":{}},"../node_modules/moment/locale/mk.js":{"id":81,"meta":{}},"../node_modules/moment/locale/ml.js":{"id":82,"meta":{}},"../node_modules/moment/locale/mr.js":{"id":83,"meta":{}},"../node_modules/moment/locale/ms-my.js":{"id":84,"meta":{}},"../node_modules/moment/locale/ms.js":{"id":85,"meta":{}},"../node_modules/moment/locale/my.js":{"id":86,"meta":{}},"../node_modules/moment/locale/nb.js":{"id":87,"meta":{}},"../node_modules/moment/locale/ne.js":{"id":88,"meta":{}},"../node_modules/moment/locale/nl-be.js":{"id":89,"meta":{}},"../node_modules/moment/locale/nl.js":{"id":90,"meta":{}},"../node_modules/moment/locale/nn.js":{"id":91,"meta":{}},"../node_modules/moment/locale/pa-in.js":{"id":92,"meta":{}},"../node_modules/moment/locale/pl.js":{"id":93,"meta":{}},"../node_modules/moment/locale/pt-br.js":{"id":94,"meta":{}},"../node_modules/moment/locale/pt.js":{"id":95,"meta":{}},"../node_modules/moment/locale/ro.js":{"id":96,"meta":{}},"../node_modules/moment/locale/ru.js":{"id":97,"meta":{}},"../node_modules/moment/locale/sd.js":{"id":98,"meta":{}},"../node_modules/moment/locale/se.js":{"id":99,"meta":{}},"../node_modules/moment/locale/si.js":{"id":100,"meta":{}},"../node_modules/moment/locale/sk.js":{"id":101,"meta":{}},"../node_modules/moment/locale/sl.js":{"id":102,"meta":{}},"../node_modules/moment/locale/sq.js":{"id":103,"meta":{}},"../node_modules/moment/locale/sr-cyrl.js":{"id":104,"meta":{}},"../node_modules/moment/locale/sr.js":{"id":105,"meta":{}},"../node_modules/moment/locale/ss.js":{"id":106,"meta":{}},"../node_modules/moment/locale/sv.js":{"id":107,"meta":{}},"../node_modules/moment/locale/sw.js":{"id":108,"meta":{}},"../node_modules/moment/locale/ta.js":{"id":109,"meta":{}},"../node_modules/moment/locale/te.js":{"id":110,"meta":{}},"../node_modules/moment/locale/tet.js":{"id":111,"meta":{}},"../node_modules/moment/locale/th.js":{"id":112,"meta":{}},"../node_modules/moment/locale/tl-ph.js":{"id":113,"meta":{}},"../node_modules/moment/locale/tlh.js":{"id":114,"meta":{}},"../node_modules/moment/locale/tr.js":{"id":115,"meta":{}},"../node_modules/moment/locale/tzl.js":{"id":116,"meta":{}},"../node_modules/moment/locale/tzm-latn.js":{"id":117,"meta":{}},"../node_modules/moment/locale/tzm.js":{"id":118,"meta":{}},"../node_modules/moment/locale/uk.js":{"id":119,"meta":{}},"../node_modules/moment/locale/ur.js":{"id":120,"meta":{}},"../node_modules/moment/locale/uz-latn.js":{"id":121,"meta":{}},"../node_modules/moment/locale/uz.js":{"id":122,"meta":{}},"../node_modules/moment/locale/vi.js":{"id":123,"meta":{}},"../node_modules/moment/locale/x-pseudo.js":{"id":124,"meta":{}},"../node_modules/moment/locale/yo.js":{"id":125,"meta":{}},"../node_modules/moment/locale/zh-cn.js":{"id":126,"meta":{}},"../node_modules/moment/locale/zh-hk.js":{"id":127,"meta":{}},"../node_modules/moment/locale/zh-tw.js":{"id":128,"meta":{}},"../node_modules/webpack/buildin/module.js":{"id":129,"meta":{}},"../node_modules/axios/index.js":{"id":130,"meta":{}},"../node_modules/es6-promise/dist/es6-promise.js":{"id":131,"meta":{}},"../node_modules/js-cookie/src/js.cookie.js":{"id":132,"meta":{}},"../node_modules/lodash/lodash.js":{"id":133,"meta":{}},"../node_modules/vue-class-component/dist/vue-class-component.common.js":{"id":134,"meta":{}},"../node_modules/vue-i18n/dist/vue-i18n.esm.js":{"id":135,"meta":{"harmonyModule":true},"exports":["default"]},"../node_modules/vue-router/dist/vue-router.esm.js":{"id":136,"meta":{"harmonyModule":true},"exports":["default"]},"../node_modules/vuex/dist/vuex.esm.js":{"id":137,"meta":{"harmonyModule":true},"exports":["Store","install","mapState","mapMutations","mapGetters","mapActions","createNamespacedHelpers","default"]},"../node_modules/axios/lib/axios.js":{"id":138,"meta":{}},"../node_modules/axios/lib/cancel/CancelToken.js":{"id":139,"meta":{}},"../node_modules/axios/lib/core/Axios.js":{"id":140,"meta":{}},"../node_modules/axios/lib/core/InterceptorManager.js":{"id":141,"meta":{}},"../node_modules/axios/lib/core/dispatchRequest.js":{"id":142,"meta":{}},"../node_modules/axios/lib/core/enhanceError.js":{"id":143,"meta":{}},"../node_modules/axios/lib/core/settle.js":{"id":144,"meta":{}},"../node_modules/axios/lib/core/transformData.js":{"id":145,"meta":{}},"../node_modules/axios/lib/helpers/btoa.js":{"id":146,"meta":{}},"../node_modules/axios/lib/helpers/buildURL.js":{"id":147,"meta":{}},"../node_modules/axios/lib/helpers/combineURLs.js":{"id":148,"meta":{}},"../node_modules/axios/lib/helpers/cookies.js":{"id":149,"meta":{}},"../node_modules/axios/lib/helpers/isAbsoluteURL.js":{"id":150,"meta":{}},"../node_modules/axios/lib/helpers/isURLSameOrigin.js":{"id":151,"meta":{}},"../node_modules/axios/lib/helpers/normalizeHeaderName.js":{"id":152,"meta":{}},"../node_modules/axios/lib/helpers/parseHeaders.js":{"id":153,"meta":{}},"../node_modules/axios/lib/helpers/spread.js":{"id":154,"meta":{}},"../node_modules/is-buffer/index.js":{"id":155,"meta":{}},"../node_modules/moment/locale recursive ^\\.\\/.*$":{"id":156,"meta":{}},"../node_modules/setimmediate/setImmediate.js":{"id":157,"meta":{}},"../node_modules/timers-browserify/main.js":{"id":158,"meta":{}}}}

‎build/webpack.base.conf.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var path = require('path')
2+
var webpack = require('webpack');
23
var utils = require('./utils')
34
var config = require('../config')
45
var svgoConfig = require('../config/svgo-config.json')
@@ -17,13 +18,7 @@ module.exports = {
1718
},
1819
resolve: {
1920
extensions: ['.ts', '.js', '.json'],
20-
alias: {
21-
'vue$': 'vue/dist/vue.esm.js',
22-
'@': resolve('src'),
23-
'assets': resolve('src/assets'),
24-
'common': resolve('src/common'),
25-
'views': resolve('src/views'),
26-
}
21+
alias: {}
2722
},
2823
module: {
2924
rules: [{
@@ -73,6 +68,10 @@ module.exports = {
7368
}]
7469
},
7570
plugins: [
71+
new webpack.DllReferencePlugin({
72+
context: __dirname,
73+
manifest: require('./vendor_manifest.json')
74+
}),
7675
]
7776
}
7877

‎build/webpack.dll.conf.js

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
var path = require('path');
2+
const webpack = require('webpack');
3+
const vendors = [
4+
'es6-promise',
5+
'axios',
6+
'js-cookie',
7+
'lodash',
8+
'moment',
9+
'vue',
10+
'vuex',
11+
'vue-i18n',
12+
'vue-router',
13+
'vue-class-component',
14+
// "element-ui": "^1.4.0",
15+
];
16+
17+
module.exports = {
18+
entry: {
19+
vendor: vendors
20+
},
21+
resolve: {
22+
extensions: [".js", ".jsx"]
23+
},
24+
output: {
25+
path: path.resolve(__dirname, '../static'),
26+
filename: '[name].dll.js',
27+
library: '[name]_library'
28+
},
29+
plugins: [
30+
new webpack.DllPlugin({
31+
context: __dirname,
32+
path: path.resolve(__dirname, '../build/[name]_manifest.json'),
33+
name: '[name]_library'
34+
}),
35+
new webpack.optimize.UglifyJsPlugin({
36+
compress: {
37+
warnings: false,
38+
},
39+
}),
40+
]
41+
};

‎config/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ module.exports = {
1313
assetsRoot: path.resolve(__dirname, '../dist'),
1414
assetsSubDirectory: 'static',
1515
assetsPublicPath: '/',
16-
productionSourceMap: true,
16+
productionSourceMap: false,
1717
// Gzip off by default as many popular static hosts such as
1818
// Surge or Netlify already gzip all static assets for you.
1919
// Before setting to `true`, make sure to:
2020
// npm install --save-dev compression-webpack-plugin
21-
productionGzip: true,
21+
productionGzip: false,
2222
productionGzipExtensions: ['js', 'css'],
2323
// Run the build command with an extra argument to
2424
// View the bundle analyzer report after build finishes:

‎index.html

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
</transition>
2828
</div>
2929
<!-- built files will be auto injected -->
30+
<script src="/static/vendor.dll.js"></script>
3031
</body>
3132

3233
</html>

‎package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"scripts": {
88
"dev": "node build/dev-server.js",
99
"start": "node build/dev-server.js",
10-
"build": "node build/build.js"
10+
"build": "node build/build.js",
11+
"build:dll": "webpack --progress --colors --config build/webpack.dll.conf.js"
1112
},
1213
"dependencies": {
1314
"axios": "^0.16.2",
@@ -19,7 +20,7 @@
1920
"vue": "^2.3.3",
2021
"vue-class-component": "^5.0.2",
2122
"vue-i18n": "^7.0.5",
22-
"vue-property-decorator": "5.1.1",
23+
"vue-property-decorator": "^6.0.0",
2324
"vue-router": "^2.7.0",
2425
"vue2-animate": "^1.0.4",
2526
"vuex": "^2.3.1",

‎src/entry/index.ts renamed to ‎src/entry/system/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// The Vue build version to load with the `import` command
22
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3-
import { Vue, i18n } from '../Basic';
4-
import router from '../router';
5-
import store from '../store';
3+
import { Vue, i18n } from '../../Basic';
4+
import router from '../../router';
5+
import store from '../../store';
66
// tslint:disable-next-line:no-unused-expression
77
new Vue({
88
el: '#app',

‎src/views/Basis.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// import Vue from 'vue';
2+
// import Component from 'vue-class-component';
3+
import { Vue, Component, Watch, Inject, Provide, Model, Prop, Emit } from 'vue-property-decorator';
4+
/**
5+
* 基类用来定义共用方法
6+
* @export
7+
* @class Basis
8+
* @extends {Vue}
9+
*/
10+
export class Basis extends Vue {
11+
}
12+
export { Component, Watch, Inject, Provide, Model, Prop, Emit };

‎src/views/main/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { Vue, Component } from 'vue-property-decorator';
1+
import { Basis, Component } from '../Basis';
22

33
@Component({
44
template: require('./layout.html'),
55
})
6-
class Main extends Vue {
6+
class Main extends Basis {
77
constructor() {
88
super();
99
}

‎static/favicon.ico

-17.6 KB
Binary file not shown.

‎static/vendor.dll.js

+39
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"strictNullChecks": true
2222
},
2323
"include": [
24-
"./src/**/*.ts"
24+
"./src/**/*.ts",
25+
"./typings/**/*.ts"
2526
],
2627
"compileOnSave": false
2728
}
File renamed without changes.

‎src/typings/vue.d.ts renamed to ‎typings/vue.d.ts

+4
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ declare module 'vue/types/vue' {
1616
$confirm: Function;
1717
}
1818
}
19+
declare module 'axios/index' {
20+
export interface AxiosResponse {
21+
}
22+
}

0 commit comments

Comments
 (0)
Please sign in to comment.