vue-cli3
前言:
因为最近需要开发新的项目,需要新搭项目架构,于是,想使用最新的vue-cli3.0来搭建新项目了!
区别:
3.0和2.0区别还是蛮大的
1.主要是build.config关于webpack的配置文件夹没有了
2.那我们要配置自己的webpack,如何配置呢?这里不得不提到vue.config.js 官方文档了
构建安装:
按照下面的步骤安装就可以了
Vue-cli3初体验
干货:vue.config.js配置篇
const path = require('path') const packageConfig = require('./package.json') const contextName = packageConfig.name; let proxy = {}, url = '/' + contextName; proxy[url] = { changeOrigin: true, // //是否跨域 target: // "http://10.10.204.243", // 测试 // "http://10.1.22.19:8090", // 本地ip // "http://10.1.21.118:8090", // 后台ip // "http://10.1.21.209:8090", // 后台ip "http://10.1.22.138:8090", // 后台ip filter: function(pathname, req) { let reg = `^/(${contextName})/.*\.(html|js|map|css|gif|jpg|png|woff|woff2|ttf|eot|svg|json|xlsx|rar|jpeg|doc|docx|zip|xls)$`; let match = pathname.match(reg); return !match; }, pathRewrite: { '^/api': ''//重写接口,后面可以使用重写的新路径,一般不做更改 } }; module.exports = { publicPath: process.env.NODE_ENV === 'production' ? './' : `/${contextName}`, // 部署应用包时的基本 URL outputDir: `${contextName}`, // 编译打包存放的目录默认dist assetsDir: 'static', lintOnSave: false, // 如果你不需要使用eslint,把lintOnSave设为false即可 productionSourceMap: false, // 设为false打包时不生成.map文件 devServer: { // Paths // assetsRoot: path.resolve(__dirname, '../dist/' + contextName), // assetsSubDirectory: 'static', // assetsPublicPath: `/${contextName}/`, // Various Dev Server settings historyApiFallback: { rewrites: [ { from: /.*/, to: path.posix.join(`${contextName}`, 'index.html') }, ], }, host: "0.0.0.0", port: 8081, open: false, proxy: proxy }, configureWebpack: config => { Object.assign(config, { externals: { BMap: "BMap" }, resolve: { extensions: ['.js', '.vue', '.json'], alias: { '@': path.resolve(__dirname, './src'), 'vue$': 'vue/dist/vue.esm.js', 'node_modules': path.resolve(__dirname, './node_modules') } } }) }, css: { extract: true, sourceMap: false, loaderOptions: { }, }, chainWebpack: config => { // 修改webpack配置 const svgRule = config.module.rule('svg') // 添加 svg loader // 清除已有的所有 loader。 // 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。 svgRule.uses.clear() svgRule .test(/\.svg$/) .include.add([path.resolve(__dirname, './src/icons'), path.resolve(__dirname, './src/jportal-common-update/src/icons')]) // 添加需要处理svg文件的文件夹,不是在assets文件夹里面的svg .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }) const fileRule = config.module.rule('images') // 添加 images loader fileRule.uses.clear() fileRule .test(/\.(png|jpeg|gif|svg)(\?.*)?$/) .exclude.add([path.resolve(__dirname, './src/icons'), path.resolve(__dirname, './src/jportal-common-update/src/icons')]) // 添加需要处理图片的文件夹,不是在assets文件夹里面 .end() .use('url-loader') .loader('url-loader') .options({ // limit: 51200, // 就这行下面 name: 'static/img/[name].[hash:5].[ext]' }) } }
需求: 本地编译完成,地址栏加上二级域名,
类似:
需要添加二级域名需要在publicPath里面配置:
publicPath: process.env.NODE_ENV === 'production' ? './' : `/${contextName}`, // contextName: jspo-sc-mgr
publicPath:
-
Type:
string
-
Default:
'/'
部署应用包时的基本 URL。用法和 webpack 本身的 output.publicPath
一致,但是 Vue CLI 在一些其他地方也需要用到这个值,所以请始终使用 publicPath
而不要直接修改 webpack 的 output.publicPath
。
默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/
。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/
,则设置 publicPath
为 /my-app/
。
这个值也可以被设置为空字符串 (''
) 或是相对路径 ('./'
),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径,也可以用在类似 Cordova hybrid 应用的文件系统中。
这个值在开发环境下同样生效。如果你想把开发服务器架设在根路径,你可以使用一个条件式的值:
module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/production-sub-path/' : '/' }