程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 构建工具

    • 初识 Webpack
    • Webpack 配置详解
    • Webpack 打包发布
    • 在 Vue 项目中配置 Webpack
      • 1. 安装和配置 nvm
        • 1.1 安装 nvm (GitHub地址)
        • 1.2 安装注意事项
        • 1.3 查看和安装 Node.js 版本
        • 1.4 配置环境变量
      • 2. 检查和配置 npm
        • 2.1 检查 npm 镜像
        • 2.2 配置 npm 下载依赖位置
        • 2.3 配置全局安装目录的环境变量
        • 2.4 验证 Node.js 环境配置
      • 3. 安装和使用 Vue CLI
        • 3.1 安装 Vue CLI
        • 3.2 使用命令创建 Vue 项目
        • 3.3 使用图形化界面创建 Vue 项目
        • 3.4 进入项目目录
      • 4. 安装 devtools
      • 5. 运行项目
      • 6. 自定义 Webpack 配置
        • 6.1 创建 vue.config.js 文件
        • 6.2 配置 Webpack
        • 6.2.1 使用 configureWebpack 选项
        • 6.2.2 使用 chainWebpack 选项
      • 7. 示例配置
        • 7.1 配置 CSS 预处理器
        • 7.2 配置开发服务器
        • 7.3 配置环境变量
    • 在 Vue 项目中配置 Vite
  • 构建工具
  • 构建工具
scholar
2024-07-29
目录

在 Vue 项目中配置 Webpack

使用 Vue CLI 可以轻松创建和配置 Vue 项目,其中 Webpack 配置也是通过 Vue CLI 来管理的。

# 1. 安装和配置 nvm

# 1.1 安装 nvm (GitHub地址 (opens new window))

nvm 即 (node version manager),好处是方便切换 node.js 版本

# 1.2 安装注意事项

  1. 要卸载掉现有的 node.js。
  2. 提示选择 nvm 和 node.js 目录时,一定要避免目录中出现空格。
  3. 选用【以管理员身份运行】cmd 程序来执行 nvm 命令。
  4. 首次运行前设置好国内镜像地址:
nvm node_mirror: https://npmmirror.com/mirrors/node/
nvm npm_mirror: https://npmmirror.com/mirrors/npm/
1
2

# 1.3 查看和安装 Node.js 版本

查看可用版本:

nvm list available
1

输出:

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    18.7.0    |   16.16.0    |   0.12.18    |   0.11.16    |
|    18.6.0    |   16.15.1    |   0.12.17    |   0.11.15    |
...
1
2
3
4
5

nvm list available出现空白解决办法(传送门 (opens new window))

建议安装 LTS(长期支持版):

nvm install 16.16.0
nvm install 14.20.0
1
2

列出已安装版本:

nvm list
1

切换到 16.16.0:

nvm use 16.16.0
1

切换到 14.20.0:

nvm use 14.20.0
1

# 1.4 配置环境变量

完成 NVM 和 Node.js 安装后,需要配置或检查系统环境变量,以确保 NVM 和 Node.js 的正常工作。


步骤 1:检查 NVM 的环境变量

安装 NVM 后,安装程序通常会自动将 NVM 的路径添加到环境变量中。你可以按以下步骤检查是否已正确配置:

  1. 按下 Win + S,搜索 环境变量,选择 编辑系统环境变量。

  2. 在弹出的窗口中,点击 环境变量 按钮。

  3. 在 系统变量区域,找到并检查 Path 变量,确认以下路径是否已添加:

    • NVM 的路径(通常是 NVM 的安装目录):

      C:\Program Files\nvm
      
      1
    • NVM 管理的 Node.js 的路径:

      C:\Program Files\nodejs
      
      1

      (注意:此路径通常是由 NVM 动态创建的符号链接。)


步骤 2:手动添加 Node.js 的 PATH(如果未自动添加)

如果安装后 Path 变量中缺少 C:\Program Files\nodejs,需要手动添加:

  1. 打开 环境变量 窗口,找到 系统变量 下的 Path,点击 编辑。

  2. 在弹出的窗口中,点击 新建,添加以下路径:

    image-20241226214111432

  3. 确认并保存设置。

# 2. 检查和配置 npm

# 2.1 检查 npm 镜像

npm 是 JavaScript 的包管理器,类似于 Java 的 Maven。要确保它使用的是国内镜像:

检查镜像:

npm get registry
1

如果返回的不是 https://registry.npmmirror.com,需要做如下设置:

npm config set registry https://registry.npmmirror.com
1
  • npmmirror 镜像站官网 (opens new window)

# 2.2 配置 npm 下载依赖位置

# Windows
# 设置 npm 缓存目录,npm 下载依赖包时会先存储在这个位置,以提高后续的安装速度。
npm config set cache "D:\nodereps\npm-cache"
# 设置 npm 全局安装包目录,npm 安装的全局依赖会存储在这个目录下。
npm config set prefix "D:\nodereps\npm_global"


# macOS
# 设置 npm 缓存目录,npm 下载依赖包时会先存储在这个位置,以提高后续的安装速度。
npm config set cache "/Users/chenyannan/dev/nodereps"
# 设置 npm 全局安装包目录,npm 安装的全局依赖会存储在这个目录下。
npm config set prefix "/Users/chenyannan/dev/nodereps"
1
2
3
4
5
6
7
8
9
10
11
12

# 2.3 配置全局安装目录的环境变量

  • 打开 系统环境变量设置:
    1. 按下 Win + S,搜索 环境变量,选择 编辑系统环境变量。
    2. 在弹出的窗口中,点击 环境变量 按钮。
  • 在 系统变量 下,找到 Path,点击 编辑。
  • 点击 新建,添加以下路径:D:\nodereps\npm_global
  • 确认保存,重新启动终端,确保环境变量生效(如果发现cmd环境变量没生效,重启电脑即可)。

如果不想重启电脑刷新环境变量,可以使用 refreshenv 命令

1. 安装 Chocolatey 包管理器(如果未安装)

  1. 打开 PowerShell (管理员权限)。

  2. 安装 Chocolatey:

    Set-ExecutionPolicy Bypass -Scope Process -Force; `
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
    iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    
    1
    2
    3

2. 使用 refreshenv 命令刷新环境变量

  1. 安装完成后,运行以下命令:

    refreshenv
    
    1

    该命令会刷新当前终端的环境变量,无需关闭或重启终端。

为什么要配置全局安装目录的环境变量?

  1. 全局工具的可执行文件路径:

    • 当你通过 npm 全局安装工具(例如 yarn, vue, pnpm)时,这些工具的可执行文件会存储在 prefix 配置路径的根目录(如 D:\nodereps\npm_global 或 /Users/chenyannan/dev/nodereps)。
    • 如果这个路径没有添加到系统的环境变量 PATH 中,终端就无法识别这些工具命令,从而导致执行命令时出现 “命令找不到” 的错误。
  2. 环境变量的作用:

    • 环境变量 PATH 告诉操作系统到哪里去查找可执行文件。如果全局安装目录不在 PATH 中,操作系统就无法定位这些工具的可执行文件。
  3. 常见问题:

    • 如果没有配置全局安装目录的环境变量,即使工具安装成功,在终端中运行 yarn, vue, pnpm等命令时会出现以下错误:

      'yarn' 不是内部或外部命令,也不是可运行的程序或批处理文件。
      
      1
    • 配置环境变量后,终端才能正确找到这些工具的可执行文件。

# 2.4 验证 Node.js 环境配置

查看环境配置:

npm config ls
1

输出示例:

; userconfig /Users/chenyannan/.npmrc
cache = "/Users/chenyannan/dev/nodereps"
prefix = "/Users/chenyannan/dev/nodereps"
registry = "https://registry.npm.taobao.org/"
1
2
3
4

# 3. 安装和使用 Vue CLI

# 3.1 安装 Vue CLI

Vue CLI 中文官网:https://cli.vuejs.org/zh/

安装 Vue CLI:

npm install -g @vue/cli
1

# 3.2 使用命令创建 Vue 项目

安装完成后,可以使用 vue-cli 快速生成一个工程化的 Vue 项目。

# 创建一个新的 Vue 项目
vue create my-project
1
2

在执行命令后,会提示选择预设配置,可以选择默认配置或手动选择配置项。

# 3.3 使用图形化界面创建 Vue 项目

使用 Vue CLI 创建一个新的 Vue 项目:

vue ui
1

上述命令会打开一个浏览器窗口,并以图形化界面将你引导至项目创建的流程。

使用图形向导来创建 Vue 项目,如下图,输入项目名:

选择手动配置项目:

添加 Vue Router 和 Vuex:

选择版本,创建项目(这里使用的 Vue 2 版本):

# 3.4 进入项目目录

cd my-vue-project
1

# 4. 安装 devtools

  • devtools 插件网址:https://devtools.vuejs.org/guide/installation.html (opens new window)
  • 安装完成后,按 F12 进入开发者工具导航栏会显示 Vue,用来调试 Vue 项目:

# 5. 运行项目

进入项目目录,执行以下命令启动项目:

npm run serve
1

# 6. 自定义 Webpack 配置

Vue CLI 通过 vue.config.js 文件来配置项目。你可以在项目根目录下创建一个 vue.config.js 文件,并在其中添加自定义的 Webpack 配置。

# 6.1 创建 vue.config.js 文件

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

touch vue.config.js
1

# 6.2 配置 Webpack

在 vue.config.js 文件中,你可以通过 configureWebpack 或 chainWebpack 选项来修改 Webpack 配置。

# 6.2.1 使用 configureWebpack 选项

configureWebpack 选项允许你直接修改 Webpack 配置对象或配置函数。

// 引入 Node.js 的 path 模块,用于处理文件路径
const path = require('path');

module.exports = {
  // 使用 configureWebpack 直接修改 Webpack 配置
  configureWebpack: {
    // 配置解析选项,设置别名
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),  // 将 '@' 别名指向 'src' 目录
        'assets': path.resolve(__dirname, 'src/assets'),  // 将 'assets' 别名指向 'src/assets' 目录
      },
    },
    // 配置插件
    plugins: [
      new MyAwesomeWebpackPlugin(),  // 使用自定义的 Webpack 插件
    ],
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 6.2.2 使用 chainWebpack 选项

chainWebpack 选项允许你使用 webpack-chain (opens new window) 提供的 API 来修改 Webpack 配置。这种方式更为灵活和强大。

// 引入 Node.js 的 path 模块,用于处理文件路径
const path = require('path');

module.exports = {
  // 使用 chainWebpack 修改 Webpack 配置
  chainWebpack: config => {
    // 设置别名
    config.resolve.alias
      .set('@', path.resolve(__dirname, 'src'))  // 将 '@' 别名指向 'src' 目录
      .set('assets', path.resolve(__dirname, 'src/assets'));  // 将 'assets' 别名指向 'src/assets' 目录

    // 配置插件
    config.plugin('MyAwesomeWebpackPlugin')
      .use(require('my-awesome-webpack-plugin'), [{ /* 插件选项 */ }]);  // 使用自定义的 Webpack 插件

    // 修改默认配置
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => {
        // 修改图片加载器的选项
        options.limit = 10000;  // 设置图片大小限制,超过此大小的图片将不进行内联
        return options;
      });
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 7. 示例配置

以下是一些常见的 Webpack 配置示例:

# 7.1 配置 CSS 预处理器

如果你想在 Vue 项目中使用 Sass 或其他 CSS 预处理器,可以在 vue.config.js 中进行如下配置:

module.exports = {
  css: {
    loaderOptions: {
      // 给 sass-loader 传递选项
      sass: {
        // 这里配置全局引入的 SCSS 文件,例如变量、混入等
        additionalData: `@import "~@/styles/variables.scss";`
      },
      // 给 less-loader 传递选项
      less: {
        lessOptions: {
          modifyVars: {
            // 配置全局变量
            'primary-color': '#42b983',
          },
          javascriptEnabled: true,
        },
      },
    },
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 7.2 配置开发服务器

你可以通过 vue.config.js 配置开发服务器的行为,例如代理请求等:

module.exports = {
  devServer: {
    proxy: {
      '/api1': {
        // 匹配所有以 '/api1' 开头的请求路径
        target: 'http://localhost:5000', // 代理目标的基础路径
        ws: true, // 用于支持 websocket
        changeOrigin: true, // 控制请求头中的 host 值
        pathRewrite: {'^/api1': ''} // 重写路径【必须写】,利用正则替换请求前缀
      },
      '/api2': {
        // 匹配所有以 '/api2' 开头的请求路径
        target: 'http://localhost:5001', // 代理目标的基础路径
        changeOrigin: true, // 控制请求头中的 host 值
        pathRewrite: {'^/api2': ''} // 重写路径,利用正则替换请求前缀
      }
    }
  }
};

/*
  changeOrigin 设置为 true 时,服务器收到的请求头中的 host 为:localhost:5000
  changeOrigin 设置为 false 时,服务器收到的请求头中的 host 为:localhost:8080
  changeOrigin 默认值为 true(React 默认为 false)
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 7.3 配置环境变量

你可以在项目根目录下创建 .env 文件来配置环境变量:

# .env
VUE_APP_API_URL=http://localhost:3000
1
2

在代码中使用环境变量:

// 打印环境变量 VUE_APP_API_URL
console.log(process.env.VUE_APP_API_URL);
1
2
编辑此页 (opens new window)
上次更新: 2025/01/05, 02:09:04
Webpack 打包发布
在 Vue 项目中配置 Vite

← Webpack 打包发布 在 Vue 项目中配置 Vite→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式