Skip to content

Commit

Permalink
优化打包
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuyihe committed Apr 26, 2019
1 parent 65d8d21 commit bdc5968
Show file tree
Hide file tree
Showing 13 changed files with 84 additions and 67 deletions.
2 changes: 0 additions & 2 deletions .env

This file was deleted.

2 changes: 2 additions & 0 deletions .env.development
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VUE_APP_CURRENTMODE ="development"
VUE_APP_LOGOUT_URL="http://localhost:3000/"
2 changes: 0 additions & 2 deletions .env.prod

This file was deleted.

3 changes: 3 additions & 0 deletions .env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

VUE_APP_CURRENTMODE ="production"
VUE_APP_LOGOUT_URL="https://www.jubao56.com/"
2 changes: 0 additions & 2 deletions .env.test

This file was deleted.

6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "my_project",
"name": "vue-admin-project",
"version": "0.1.0",
"private": true,
"scripts": {
Expand Down Expand Up @@ -28,10 +28,12 @@
"@vue/cli-plugin-babel": "^3.4.0",
"@vue/cli-service": "^3.4.0",
"compression-webpack-plugin": "^2.0.0",
"html-webpack-plugin": "^3.2.0",
"node-sass": "^4.9.2",
"sass-loader": "^7.1.0",
"vue-cli-plugin-element": "^1.0.1",
"vue-template-compiler": "^2.5.21"
"vue-template-compiler": "^2.5.21",
"webpack-bundle-analyzer": "^3.3.2"
},
"postcss": {
"plugins": {
Expand Down
10 changes: 1 addition & 9 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>vue-admin-project</title>
<% if (process.env.NODE_ENV === 'production') { %>
<% for(var css of htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" href="<%=css%>" as="style">
<% } %>
<% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%=js%>"></script>
<% } %>

<% } %>

</head>
<body>
<noscript>
Expand Down
2 changes: 1 addition & 1 deletion src/api/api.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {get,post} from './request';
//登陆
export const login=(login)=>post('/api/post/user/login',login)
export const login= (login)=>post('/api/post/user/login',login)
//上传
export const upload=(upload)=>get('/api/get/upload',upload)
2 changes: 1 addition & 1 deletion src/api/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
import {messages} from '../assets/js/common.js'
import store from '../store/store'
axios.defaults.timeout = 60000;
axios.defaults.baseURL = process.env.BASE_URL;
axios.defaults.baseURL = process.env.VUE_APP_LOGOUT_URL;
axios.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded;charset=UTF-8";
let loading = null;
Expand Down
4 changes: 0 additions & 4 deletions src/views/component/editor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,8 @@
</div>
</template>
<script>
import { VueEditor } from 'vue2-editor'
import {upload} from '@/api/api.js'
export default {
components: {
VueEditor
},
data() {
return {
content: '<h1>你好,zyh</h1>'
Expand Down
3 changes: 1 addition & 2 deletions src/views/layout/components/Tags.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@
</div>
</template>
<script>
import { messages } from "@/assets/js/common.js";
import { constants } from "crypto";
import { messages } from "@assets/js/common.js";
// import { mapState } from "vuex";
export default {
created() {
Expand Down
7 changes: 4 additions & 3 deletions src/views/login/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
</div>
</template>
<script>
// import { login } from "@/api/api.js";
import { messages } from "@/assets/js/common.js";
import { login } from "@api";
import { messages } from "@assets/js/common.js";
export default {
name: "login",
data() {
Expand Down Expand Up @@ -65,7 +65,7 @@ export default {
};
},
methods: {
submitForm(formName) {
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
//这里模拟管理员以及用户两种权限,一般的都是登陆后接口传过来
Expand All @@ -77,6 +77,7 @@ export default {
});
// login(this.ruleForm2)
// .then(res => {
// console.log(res)
// //提交数据到vuex
// this.$store.commit("COMMIT_TOKEN", res);
// this.$message('success',res.message)
Expand Down
106 changes: 67 additions & 39 deletions vue.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ let path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
//gzip压缩插件
const CompressionWebpackPlugin = require('compression-webpack-plugin')
//打包分析
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const cdnPlugin = require('webpack-cdn-plugin');
function resolve(dir) {
return path.join(__dirname, dir)
}
Expand All @@ -12,62 +15,59 @@ let externals = {
'axios': 'axios',
'element-ui': 'ELEMENT',
'vue-router': 'VueRouter',
'vuex': 'Vuex'
}
const cdn={
css:[
//element-ui css
'https://unpkg.com/element-ui/lib/theme-chalk/index.css'
],
js:[
//vue
'https://unpkg.com/[email protected]/dist/vue.min.js',
//axios
'http://cdn.staticfile.org/axios/0.19.0-beta.1/axios.min.js',
//vuex
'https://unpkg.com/[email protected]/dist/vuex.min.js',
//vue-router
'https://unpkg.com/[email protected]/dist/vue-router.min.js',
//element
'https://unpkg.com/[email protected]/lib/index.js'
]
'vuex': 'Vuex',
'echarts': 'echarts',
'vue2-editor': 'VueEditor'
}
module.exports = {
//基本路径
publicPath: './',
publicPath: '/dist/',
//输出文件目录
outputDir: 'dist',
//放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
assetsDir: 'static',
//生产环境不需要生产map文件
productionSourceMap:false,
productionSourceMap: false,
chainWebpack: config => {
//这里是对环境的配置,不同的环境对应不同的BASE_URL
config.plugin('define').tap(args => {
args[0]['process.env'].BASE_URL = JSON.stringify(process.env.BASE_URL)
args[0]['process.env'].VUE_APP_LOGOUT_URL = JSON.stringify(process.env.VUE_APP_LOGOUT_URL)
console.log(args[0])
return args;
});
//代码分割
config.optimization.minimize(true);
config.optimization.splitChunks({
chunks: 'all'
})

//只在生产环境生效
if(process.env.NODE_ENV==='production'){
if (process.env.VUE_APP_CURRENTMODE === 'production') {
config.externals(externals)
config.plugin('html')
.tap(args=>{
args[0].cdn=cdn;
return args
config.optimization.minimize(true);
config.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
public: {
name: 'public',
test: resolve('src/components'),
minSize: 0, //表示在压缩前的最小模块大小,默认值是 30kb
minChunks: 2, // 最小公用次数
priority: 5, // 优先级
reuseExistingChunk: true // 公共模块必开启
},
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
}
}
})
}
//设置别名
config.resolve.alias
//设置别名
config.resolve.alias
.set('@', resolve('src'))
.set('@api', resolve('src/api/api'))//接口地址
.set('@assets', resolve('src/assets'))
},
// webpack插件配置
configureWebpack: config => {
let plugins = [
//生产环境插件
let pluginsPro = [
new UglifyJsPlugin({
uglifyOptions: {
compress: {
Expand All @@ -90,16 +90,44 @@ module.exports = {
threshold: 10240,
minRatio: 0.8,
}),
]
if (process.env.NODE_ENV !== 'development') {
config.plugins = [...config.plugins, ...plugins]
// new BundleAnalyzerPlugin(),

],
//通用插件
plugins = [
new cdnPlugin({
modules: [
{ name: 'vue', var: 'Vue', path: 'dist/vue.min.js' },
{ name: 'axios', var: 'axios', path: 'dist/axios.min.js' },
{ name: 'vuex', var: 'Vuex', path: 'dist/vuex.min.js' },
{ name: 'element-ui', var: 'ELEMENT', path: 'lib/index.js', style: 'lib/theme-chalk/index.css' },
{ name: 'echarts', var: 'echarts', path: 'dist/echarts.min.js' },
{ name: 'vue2-editor', var: 'VueEditor', path: 'dist/vue2-editor.js' },
{ name: 'vue-router', var: 'VueRouter', path: 'dist/vue-router.min.js' },
],
publicPath: '/node_modules'
})
]
if (process.env.VUE_APP_CURRENTMODE !== 'development') {
config.plugins = [...config.plugins, ...pluginsPro]
}
config.plugins = [...config.plugins, ...plugins]
},
devServer: {
open: true
port: 8888, // 端口
open: true, // 自动开启浏览器
compress: false, // 开启压缩
overlay: {
warnings: true,
errors: true
}
},
//定义scss全局变量
css: {
// 是否使用css分离插件 ExtractTextPlugin
extract: true,
// 开启 CSS source maps?
sourceMap: false,
loaderOptions: {
sass: {
data: `@import "@/assets/scss/global.scss";`
Expand Down

0 comments on commit bdc5968

Please sign in to comment.