【Vue-cli】两个或多个Vue项目如何同时放在一个站点上?如何更改npm run build的输出配置?
问题:
vue-cli项目开发完成后需要通过npm run build来打包,打包后生成的index.html、static、assets等目录,因为index.html中的.js、.css和图片等引入资源文件路径都是/static/…的,而/开头的路径是绝对路径,也就是说index.html和static目录只能放在站点的根目录下,那么当我一个站点想放两个甚至更多的项目时各个项目的打包文件放在哪就成了大麻烦,总不能全放根目录吧?
我想了一下可以只要实现把项目1打包文件放在站点根目录的project_1目录中、项目2放在project_2目录中、项目3放在project_3目录中,但当访问index.html中因为index.html引入的文件路径都是/static、/assets这样的绝对路径,所以我们只要能修改index.html引入文件的路径就可以解决多个项目同时放在一个站点的问题,那么怎样配置才能修改npm run build输出的index.html文件中的引入文件路径地址呢?
解决方案:
以上遇到的问题后来经过研究和探索最终找到了解决方案,在此分享给大家
解决方法是通过vue-cli配置文件配置公共路径,如图在根目录下创建vue.config.js文件,此文件是vue-cli的配置文件,这个文件在创建脚手架时不会自动生成,所以需要手动创建,在这个文件里可以配置publicPath公共路径、devServer本地服务器配置、Webpack打包配置等等(webpack.config.js文件无法在vue-cli项目中使用,可以在此进行配置)。
而多个项目同时放在一个站点上的根本问题就在于build打包出来的所有引入文件路径默认全是/static开头,这样必须把项目放在根目录下才能访问,所以我们需要在vue.config.js中配置publicPath公共路径(如图),这样打包出来的文件引入路径都是以/xxx(xxx为自定义路径)开头的。
放大看一下配置之前与配置之后的index.html打包文件对比
这样我们就可以把打包出来的所有文件放到站点根目录下的project_2目录下啦,是不是很神奇呢
下面把vue.config.js的基础配置代码分享给大家。vue.config.js详解
module.exports = { publicPath: "/project_2", // 公共路径 默认为"/",建议使用"./"相对路径 devServer: { // 本地服务器配置(npm run serve) port: 8080, // 端口 // host: "localhost", // 域名 https: false, // 是否开启https open: true, // 是否在开启服务器后自动打开浏览器访问该服务器 proxy: { // 设置代理服务器(强烈建议使用,可以在本地服务器请求ajax动态数据) "/": { // base-接口基础路径,通常配置/ target: "http://localhost/", // 此处配置代理服务器的域名,可以直接配置线上域名 changeOrigin: true, pathRewrite: {} } } }, lintOnSave: false, // 取消lint语法检测,此处可不配置 outputDir:"dist", // build打包输出目录 assetsDir:"assets", // 静态文件输出目录,基于dist indexPath: "index.html", // 输出html文件名 productionSourceMap: false, // 取消.map文件的打包,加快打包速度 configureWebpack: (config) => { // process.env为环境变量,分别对应.env.development文件和.env.production文件 此处表示加快开发环境打包速度 if (process.env.NODE_ENV !== 'production') return; //生产环境去掉console.log config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true; return { // 此处配置webpack.config.js的相关配置 plugins: [], performance: {} }; } };
在vue-cli项目根目录下新建文件vue.config.js,然后在文件中把上述代码复制进去就可以用啦~(别忘了修改一下publicPath哦,建议配置./)
后期我会把代理服务器(解决本地服务器请求ajax数据问题)及环境变量配置(大家经常看见的process.env.xxx变量)相关技术分享给大家,希望可以帮助到更多的前端朋友。
发布时间:2020年7月23日
作者:web_star
相关文章推荐:
- vue-cli 项目打包 npm run build
- vue-cli npm run build空白页的两个坑 webpack gzip文件压缩优化打包文件
- vue-cli 项目中绝对路径引用的相关资源 npm run build 后 打开页面报404错误
- 关于vue-cli项目npm run build后,index.html无法在浏览器打开
- vue-cli构建项目 npm run build后应该怎么运行在本地查看效果
- VUE 中配置生产环境和发布环境配置不同的接口地址 (运行npm run dev的时候,运行的是测试接口。npm run build打包项目的时候,打包的是服务器正式接口)
- mac新检出vue项目执行npm install和npm run build报错,请教如何解决
- vue-cli构建项目 npm run build打包后怎么在本地查看效果
- vue-cli构建项目 npm run build后应该怎么运行在本地查看效果
- vue2.x 在引用插件的时候,npm run dev跑正常 ,npm run build 报错vue-cli Unexpected token: punc (() [
- 史上最详细--------IDEA如何导入一个maven项目,并配置启动项jetty:run
- 如何用vue-cli快速搭建一个vue项目
- Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法
- 下载一个vue项目执行npm install 后运行项目npm run dev后出错 - 问题解决
- Bitbucket 入门 - 如何在两个电脑里同时开发一个项目
- SpringMVC配置双数据源,一个java项目同时连接两个数据库
- 用vue-cli构建了项目之后在webstorm开发,用npm run dev跑本地服务,经常修改之后在浏览器刷新没反应,偶尔才会有刷新,需要重新跑一遍npm run dev才会更新,这是怎么回事呢?
- SpringMVC配置双数据源,一个java项目同时连接两个数据库
- vue-cli 打包 npm run build 后的问题