vue脚手架vuecli2升级vuecli4及vue多页面配置

1,109 阅读3分钟

之前公司使用的是vuecli2搭建的vue项目,最近到了空闲期打算将vue脚手架升级为vuecli4

一,升级本地环境

1,将node升级到最新版本,所以我们先去 官网下载 一个稳定的新版本覆盖本地版本,

2,本地全局安装了 2.0 的环境,所以需要全局卸载再安装 4.0

npm uninstall -g vue-cli
npm install -g @vue/cli

安装好了之后输入 vue -V 查看版本

二、搭建项目

vue create <Project Name> //文件名 不支持驼峰(含大写字母)

会出现让你选择使用哪种安装方式 vue2 vue3 还是手动方法配置 如果之前你又配置过会默认你之前配置过的条件

我们选择最后一个 手动配置会让你选择需要配置什么

接着会问你安装vue版本 我们这里选择2.0版本

选择是否使用路由 history router,其实直白来说就是是否路径带 # 号,建议选择 N,否则服务器还要进行配置

css 的预处理器我选择的是 Sass/SCSS(with dart-sass) 

选择 ESLint 代码校验规则,提供一个插件化的javascript代码检测工具,ESLint + Prettier 使用较多

然后选择什么时候进行代码校验,Lint on save 保存就检查,Lint and fix on commit fix 或者 commit 的时候检查,建议第一个

下面就是如何存放配置了,In dedicated config files 存放到独立文件中,In package.json 存放到 package.json 中本着项目结构简单的想法,我选择了第二个

最后就是是否保存本次的配置了,N 不记录,如果选择 Y 需要输入保存名字下次安装会出现你本次的安装配置 如我上面所说的

接着等待安装

出现如图红框所示的提示,就搭建成功,进入项目目录,直接输入 npm run serve 就可以了

三 文件迁移

src=======src文件里面

index.html与static文件夹========public文件夹里面

package.json===(选择性迁移过去)=====package.json

四 项目配置

 新建一个 vue.config.js 文件来覆盖项目的配置,可以 访问官方文档

由于重构项目为vue多页面 因此pages配置如下:

const path = require('path');const glob = require('glob');function resolve(dir) {  return path.join(__dirname, dir);}// 获取多级的入口文件function getMultiEntry(globPath) {  const entries = {};  let basename;  let pathname;  glob.sync(globPath).forEach((entry) => {    basename = path.basename(entry, path.extname(entry));    const [lv, rv] = entry.split('/').splice(-4);    // console.log('tmptmptmp====', tmp);    let pathsrc = `${lv}/${rv}`;    if (lv == 'src') {      pathsrc = rv;    }    // console.log(pathsrc)    pathname = `${pathsrc}/${basename}`; // 正确输出js和html的路径    entries[pathname] = entry;    // console.log(`${pathname}-----------${entry}`);  });  return entries;}const conf = {};
// 获得入口js文件 根据自己的目录文件进行配置(src/views/home/index/index.js
||src/views/other/index/other.js)

const entriesjs = getMultiEntry('./src/views/**/index/*.js'); Object.keys(entriesjs).forEach((pathname) => {  console.log('entriesjsentriesjs', pathname);  const fileName = entriesjs[pathname].substring('', entriesjs[pathname].lastIndexOf('.'));  conf[pathname] = {    /* 返回对应的入口页面配置(根据自己的项目修改配置),详情见vue-cli官网 */    template: `${fileName}.html`,    entry: `${entriesjs[pathname]}`,    filename: `${pathname}.html`,    chunks: [pathname, 'vendors', 'manifest'],    inject: true,    // title: fileName,  };  return conf;});console.log('confconfconfconf===', conf);module.exports = {  pages: conf,  productionSourceMap: false,  lintOnSave: true,  //   assetsDir: 'static',  publicPath: '/',  outputDir: '',  chainWebpack: (config) => {    // 移除 prefetch、preload加载模式    config.plugins.delete('preload'); // 默认为index.html    config.plugins.delete('prefetch'); // 默认为index.html    config.optimization      .splitChunks({        cacheGroups: {},      })      .end()      .resolve.alias.set('@', resolve('src'))      .set('@c', resolve('src/components'))      .set('@v', resolve('src/views'))      .set('@public', resolve('public'))      .end();  },  css: {    loaderOptions: {      sass: {        // 根据自己样式文件的位置调整        prependData: '@import "@/assets/css/index.scss";',      },    },  },  devServer: {    port: '8092',    index: 'views/home/index.html',    open: true,  },};

五 运行项目

npm install

npm run serve

运行中可能出现插件安装不齐全 图片地址不对 重新安装插件 修改图片地址,问题解决后,项目运行正常