帮你规避vue打包的问题!

276 阅读2分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

前言

今天发现很多一两年工作经验的小伙伴还不会打包vue,而且并不知道打包的命令!真的大无语,更不用说部署到服务器放到nginx目录下这一系列操作了,下面我们来看看吧~

一、vue的运行命令区别

npm run dev 和npm run serve的区别你知道吗?

1、npm run dev

2、npm run serve

看出来了嘛,我们通过package.json文件就能看出scripts的key,第一个npm run dev的key是“dev”,第二个是"serve"所以导致我们运行的命令不同,但是为什么命令会不同呢?这和vue脚手架有关,导致这里的配置不同。

3、脚手架

(1)Vue这个就是我们常说的渐进式框架,但是这个是完整的一整个框架。

(2)Vue Cli这个是基于vue进行快速工程化的一套命令行工具,由vue整体核心构成

有了这个区别,才有两种运行命令方式。

二、vue打包

1、静态文件打包后放到服务器报错

      这个是很常见的一个问题了,基本上每开发一个项目都要配置一次,还会出现问题。

      vue项目:在config/index.js中配置:

主要配置assetsPublicPath:‘./’

assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './',

      vue cli项目:在vue.config.js中配置:

module.exports = {  publicPath: './',  outputDir: "dist", // 输出文件目录  assetsDir: 'static', // 配置js、css静态资源二级目录的位置 };

这个主要是配置publicPath:‘./’

2、打包后只有背景图,没有任何页面内容,控制台也不报错

这个不知道大家是否遇到过,这个很简单,就是因为配置了路由模式是history,去掉这个或者改成hash就好了!

如果必须用history,也有解决办法,在mode上面加一个base:'/demo/'(这个demo是工程名字)

router/index.js
const router = new Router({    mode: "history",    base: "demo",    routes: [        {           path: "/",           name: "index",           component: index,        }    ],});

vue.config.js
module.exports = {
    publicPath: '/demo/',
    outputDir: 'dist',}

nginx(demo也是项目名):

location /demo {
	index  index.html index.htm;
	try_files $uri $uri/ /demo /;
}

先写这么多,今天有点忙,写的不太具体后面有时间再完善一下,我下班啦~