配置vue.config.js文件

本文介绍了Vue3项目的基本结构,并详细讲解了vue.config.js的三种配置方式,包括公共路径、输出目录和代理设置。同时,解释了tsconfig.json文件的配置项,如目标代码版本、模块系统、严格模式和类型别名等,这些对于TypeScript项目的编译和类型检查至关重要。

项目结构

vue3-ts-cms
├─ .browserslistrc
├─ .editorconfig
├─ .eslintrc.js
├─ .gitignore
├─ .prettierignore
├─ .prettierrc
├─ babel.config.js
├─ package-lock.json
├─ package.json
├─ public
│  ├─ favicon.ico
│  └─ index.html
├─ README.md
├─ src
│  ├─ App.vue
│  ├─ assets
│  │  └─ logo.png
│  ├─ components
│  ├─ main.ts
│  ├─ shims-vue.d.ts
├─ tsconfig.json
├─ vue.config.js

创建vue.config.js文件

在项目根目录下创建 vue.config.js 文件

vue.config.js有三种配置方式:

  • 方式一:直接通过CLI提供给我们的选项来配置:
    • 比如publicPath:配置应用程序部署的子目录(默认是 /,相当于部署在 https://www.my-app.com/);
    • 比如outputDir:修改输出的文件夹;
  • 方式二:通过configureWebpack修改webpack的配置:
    • 可以是一个对象,直接会被合并;
    • 可以是一个函数,会接收一个config,可以通过config来修改配置;
  • 方式三:通过chainWebpack修改webpack的配置:
    • 是一个函数,会接收一个基于 webpack-chain 的config对象,可以对配置进行修改;
module.exports = {
  outputDir: './dist',
  // publicPath: './',
  devServer: {
    // 代理
    proxy: {
      '^/api': {
        target: 'https://www.fastmock.site/mock/89efb181f2e22e0b4044eee348889b6e/kjhs',
        pathRewrite: {
          '^/api': ''
        },
        changeOrigin: true
      }
    }
  }

  // 方式二
  // configureWebpack: {
  //   resolve: {
  //     alias: {
  //       views: '@/components'
  //     }
  //   }
  // }
  // configureWebpack: (config) => {
  //   config.resolve.alias = {
  //     '@': path.resolve(__dirname, 'src'),
  //     views: '@/views'
  //   }
  // }

  // 方式三
  // chainWebpack: (config) => {
  //   config.resolve.alias.set('@', path.resolve(__dirname, 'src')).set('components', '@/components')
  // }
}

解释tsconfig.json文件

{
  "compilerOptions": {
    // 目标代码(ts -> js(es5/6/7))
    "target": "esnext",
    // 目标代码需要使用的模块化方案(commonjs require/module.exports/es module import/export)
    "module": "esnext",
    // 严格一些严格的检查(any)
    "strict": true,
    // 对jsx进行怎么样的处理
    "jsx": "preserve",
    // 辅助的导入功能
    "importHelpers": true,
    // 按照node的方式去解析模块 import "/index.node"
    "moduleResolution": "node",
    // 跳过一些库的类型检测 (axios -> 类型/ lodash -> @types/lodash / 其他的第三方)
    // import { Person } from 'axios'
    "skipLibCheck": true,
    // export default/module.exports = {}
    // es module 和 commonjs
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    // 要不要生成映射文件(ts -> js)
    "sourceMap": true,
    // 文件路径在解析时, 基本url
    "baseUrl": ".",
    // 指定具体要解析使用的类型
    "types": ["webpack-env"],
    // 路径解析(类似于webpack alias)
    "paths": {
      "@/*": ["src/*"],
      "components/*": ["src/components/*"]
    },
    // 可以指定在项目中可以使用哪里库的类型(Proxy/Window/Document)
    "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": ["node_modules"]
}
vue.config.js是一个可选的配置文件,若项目根目录存在该文件,会被@vue/cli-service自动加载,也可使用package.json中的vue字段,但需严格遵照JSON格式书写[^1]。以下是vue2中配置vue.config.js的方法和常见配置项说明: ### 常见配置项及用途 - **publicPath**:设置部署应用时的基础路径,例如 `/` 或 `/my-app/` [^2]。 - **outputDir**:构建输出目录,默认是 `dist` [^2]。 - **assetsDir**:放置静态资源(图片、字体、JS/CSS)的子目录 [^2]。 - **lintOnSave**:是否在保存时使用ESLint检查代码 [^2]。 - **devServer**:配置开发服务器,可设置端口、代理、HTTPS、自动打开浏览器等 [^2]。 - **configureWebpack / chainWebpack**:用于修改Webpack配置,如添加插件、loader等 [^2]。 - **productionSourceMap**:控制是否生成生产环境的source map文件 [^2]。 - **transpileDependencies**:设置需要通过Babel转译的依赖包 [^2]。 ### 配置示例 #### 配置src别名为@ ```javascript // vue.config.js const { resolve } = require('path'); module.exports = { chainWebpack: config => { const types = ['vue-modules', 'vue', 'normal-modules', 'normal']; config.resolve.alias.set('@', resolve('src')); } }; ``` 此代码通过 `chainWebpack` 配置项修改Webpack配置,将 `src` 目录别名为 `@`,方便在代码中引用 `src` 下的文件 [^3]。 #### 关闭生产环境的source map ```javascript // vue.config.js module.exports = { productionSourceMap: false }; ``` 该配置用于控制是否生成生产环境的源代码映射文件,关闭可减少打包后的文件体积 [^4]。 #### 去掉eslint检查 ```javascript // vue.config.js module.exports = { lintOnSave: false }; ``` `lintOnSave` 配置项可设置 `eslint-loader` 是否在保存时检查代码,将其设为 `false` 可去掉eslint检查 [^4]。 #### 配置开发环境的Source Map类型 ```javascript // vue.config.js configureWebpack: config => { if (process.env.NODE_ENV === 'production') { // 为生产环境修改配置... config.mode = 'production'; config.devtool = "source-map"; } else { // 为开发环境修改配置... config.mode = 'development'; } }; ``` `config.devtool` 是Webpack的选项,设置为 `"source-map"` 会生成独立的Source Map文件,用于将编译后的代码映射回原始源代码,在开发环境中开启有助于提高调试效率,但会增加构建时间和打包后文件的体积 [^4]。 #### 多页面配置 ```javascript // vue.config.js module.exports = { pages: { index: { // page 的入口 entry: "src/index/main.js", // 模板来源 template: "public/index.html", // 在 dist/index.html 的输出 filename: "index.html", // 当使用 title 选项时, // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> title: "Index Page", // 在这个页面中包含的块,默认情况下会包含 // 提取出来的通用 chunk 和 vendor chunk。 chunks: ["chunk-vendors", "chunk-common", "index"], }, // 当使用只有入口的字符串格式时, // 模板会被推导为 `public/subpage.html` // 并且如果找不到的话,就回退到 `public/index.html`。 // 输出文件名会被推导为 `subpage.html`。 subpage: "src/subpage/main.js", }, }; ``` `pages` 配置项用于多页面应用,可指定每个页面的入口、模板、输出文件名等 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值