Vue2.5 Web App 项目搭建 (TypeScript版)

匿名 (未验证) 提交于 2019-12-03 00:33:02

参考了几位同行的Blogs和StackOverflow上的许多问答,在原来的ng1加TypeScript以及Webpack的经验基础上,搭建了该项目,核心文件如下,供需要的人参考。

package.json

 1 {  2   "name": "app",  3   "version": "1.0.0",  4   "description": "App package.json from the documentation, supplemented with testing support",  5   "author": "",  6   "private": true,  7   "scripts": {  8     "dev": "webpack-dev-server -d --inline --hot --env.dev",  9     "build": "rimraf dist && webpack --progress --hide-modules" 10   }, 11   "dependencies": { 12     "axios": "^0.18.0", 13     "bootstrap": "^4.0.0", 14     "bootstrap-vue": "^2.0.0-rc.2", 15     "element-ui": "^2.2.2", 16     "font-awesome": "^4.7.0", 17     "jointjs": "^2.0.1", 18     "jquery": "^3.3.1", 19     "js-md5": "^0.7.3", 20     "layui-src": "^2.2.5", 21     "linq": "^3.0.9", 22     "lodash": "^4.17.5", 23     "pdfmake": "^0.1.36", 24     "popper.js": "^1.14.1", 25     "tinymce": "^4.7.12", 26     "uuid": "^3.2.1", 27     "vue": "^2.5.16", 28     "vue-class-component": "^6.2.0", 29     "vue-echarts-v3": "^1.0.19", 30     "vue-i18n": "^7.6.0", 31     "vue-i18n-extensions": "^0.1.0", 32     "vue-lazyload": "^1.2.3", 33     "vue-pdf": "^3.3.1", 34     "vue-property-decorator": "^6.0.0", 35     "vue-router": "^3.0.1", 36     "vue-socket.io": "^2.1.1-b", 37     "vue-tinymce": "github:lpreterite/vue-tinymce", 38     "vue-video-player": "^5.0.2", 39     "vuex": "^3.0.1", 40     "vuex-class": "^0.3.0" 41   }, 42   "engines": { 43     "node": ">=6.0.0", 44     "npm": ">= 3.0.0" 45   }, 46   "browserslist": [ 47     "> 1%", 48     "last 2 versions", 49     "not ie <= 8" 50   ], 51   "devDependencies": { 52     "@kazupon/vue-i18n-loader": "^0.3.0", 53     "@types/lodash": "^4.14.106", 54     "ajv": "^6.3.0", 55     "autoprefixer": "^8.2.0", 56     "babel-core": "^6.26.3", 57     "babel-helper-vue-jsx-merge-props": "^2.0.3", 58     "babel-loader": "^7.1.4", 59     "babel-plugin-syntax-dynamic-import": "^6.18.0", 60     "babel-plugin-syntax-jsx": "^6.18.0", 61     "babel-plugin-transform-vue-jsx": "^3.7.0", 62     "babel-preset-env": "^1.6.1", 63     "bootstrap-loader": "^2.2.0", 64     "clean-webpack-plugin": "^0.1.19", 65     "compression-webpack-plugin": "^1.1.11", 66     "copy-webpack-plugin": "^4.5.1", 67     "css-loader": "^0.28.11", 68     "cssnano": "^3.10.0", 69     "extract-text-webpack-plugin": "^3.0.2", 70     "file-loader": "^1.1.11", 71     "html-loader": "^0.5.5", 72     "html-webpack-plugin": "^3.1.0", 73     "image-webpack-loader": "^4.2.0", 74     "json-loader": "^0.5.7", 75     "node-sass": "^4.7.2", 76     "optimize-css-assets-webpack-plugin": "^3.2.0", 77     "postcss-import": "^11.1.0", 78     "postcss-loader": "^2.1.3", 79     "postcss-url": "^7.3.2", 80     "resolve-url-loader": "^2.3.0", 81     "rimraf": "^2.6.2", 82     "sass-loader": "^6.0.7", 83     "sass-resources-loader": "^1.3.3", 84     "style-loader": "^0.20.3", 85     "ts-loader": "^3.1.1", 86     "tslint": "^5.9.1", 87     "tslint-config-standard": "^7.0.0", 88     "tslint-loader": "^3.6.0", 89     "typescript": "^2.8.3", 90     "uglifyjs-webpack-plugin": "^1.2.5", 91     "url-loader": "^1.0.1", 92     "vue-loader": "^14.2.1", 93     "vue-style-loader": "^4.1.0", 94     "vue-template-compiler": "^2.5.16", 95     "webpack": "^3.1.0", 96     "webpack-dev-server": "^2.9.4", 97     "webpack-parallel-uglify-plugin": "^1.1.0" 98   } 99 }

webpack.config.js

  1 const {resolve} = require(‘path‘);   2 const webpack = require(‘webpack‘);   3 const CopyWebpackPlugin = require(‘copy-webpack-plugin‘);   4 const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);   5 const ExtractTextPlugin = require(‘extract-text-webpack-plugin‘);   6 const OptimizeCSSPlugin = require(‘optimize-css-assets-webpack-plugin‘);   7 const ParallelUglifyPlugin=require(‘webpack-parallel-uglify-plugin‘) ;   8 const CompressionWebpackPlugin = require(‘compression-webpack-plugin‘);   9 const CleanWebpackPlugin = require(‘clean-webpack-plugin‘);  10 const url = require(‘url‘);  11 const publicPath = ‘/public/‘;  12   13 function getVueStyleLoader(isDev) {  14     if (!isDev) {  15         return ExtractTextPlugin.extract({  16             fallback: "vue-style-loader",  17             use: ["css-loader", "postcss-loader", "sass-loader",  18                 "sass-resources-loader?resources=./src/common/style/sass-resources.scss"]  19         });  20     }  21     return "vue-style-loader!css-loader?sourceMap!postcss-loader?sourceMap!sass-loader?sourceMap!sass-resources-loader?resources=./src/common/style/sass-resources.scss";  22 }  23   24 function getCssLoader(isDev) {  25     if (!isDev) {  26         return ExtractTextPlugin.extract({  27             fallback: "style-loader",  28             use: ["css-loader", "postcss-loader"]  29         });  30     }  31     return [  32         {loader: ‘style-loader‘}, 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!