修改vue+webpack run build的路径方法

yizhihongxing

下面是修改vue+webpack run build的路径方法的详细攻略。

1. 理解打包路径

在修改打包路径之前,我们首先需要理解打包路径的概念。在使用vue-cli构建项目时,我们可以通过执行npm run build命令来进行打包,打包后的文件默认会被生成到dist目录下。如果我们需要修改打包后文件的输出路径,那么就需要修改webpack的配置文件。

2. 修改webpack配置文件

vue-cli生成的项目模板默认使用的是webpack 4.x,因此我们需要修改webpack.prod.conf.js配置文件。

在该文件中,我们需要进行以下几个步骤:

2.1 修改output.path属性

我们可以通过修改output.path属性来指定打包后文件的输出路径。我们可以在webpack.prod.conf.js文件中找到以下代码:

output: {
    path: config.build.assetsRoot,
    filename: utils.assetsPath('js/[name].[chunkhash].js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
}

这里的config.build.assetsRoot指的就是打包后文件的输出路径,我们可以将其修改为我们想要的路径,例如:path: path.resolve(__dirname, '../dist')

2.2 修改publicPath属性

修改output.path后,我们还需要修改output.publicPath属性。publicPath属性指定了项目中资源文件的引用路径,它会将生成的JS/CSS/图片等资源文件的前缀路径修改为我们指定的路径。

我们可以在webpack.prod.conf.js文件中找到以下代码:

output: {
    ...
    publicPath: config.build.assetsPublicPath
}

这里的config.build.assetsPublicPath指的是打包后静态资源文件的引用路径,我们可以将其修改为我们想要的路径。

2.3 示例说明

示例1:将打包后的文件输出到build目录下

// webpack.prod.conf.js

const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

const webpackConfig = merge(baseWebpackConfig, {
  mode: 'production',
  output: {
    path: path.resolve(__dirname, '../build'),
    filename: utils.assetsPath('js/[name].[chunkhash].js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js'),
    publicPath: '/'
  },
  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        uglifyOptions: {
          compress: {
            warnings: false
          }
        },
        sourceMap: config.build.productionSourceMap,
        parallel: true
      }),
      new OptimizeCSSPlugin({
        cssProcessorOptions: config.build.productionSourceMap
          ? { safe: true, map: { inline: false } }
          : { safe: true }
      })
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/prod.env')
    }),
    new MiniCssExtractPlugin({
      filename: utils.assetsPath('css/[name].[chunkhash].css'),
      chunkFilename: utils.assetsPath('css/[id].[chunkhash].css')
    })
  ]
})

module.exports = webpackConfig

在该示例中,我们将打包后的文件输出到了build目录下,并且将引用路径指定为了根路径/

示例2:将打包后的文件输出到build目录下的web目录

// webpack.prod.conf.js

const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

const webpackConfig = merge(baseWebpackConfig, {
  mode: 'production',
  output: {
    path: path.resolve(__dirname, '../build/web'),
    filename: utils.assetsPath('js/[name].[chunkhash].js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js'),
    publicPath: '/web/'
  },
  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        uglifyOptions: {
          compress: {
            warnings: false
          }
        },
        sourceMap: config.build.productionSourceMap,
        parallel: true
      }),
      new OptimizeCSSPlugin({
        cssProcessorOptions: config.build.productionSourceMap
          ? { safe: true, map: { inline: false } }
          : { safe: true }
      })
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/prod.env')
    }),
    new MiniCssExtractPlugin({
      filename: utils.assetsPath('css/[name].[chunkhash].css'),
      chunkFilename: utils.assetsPath('css/[id].[chunkhash].css')
    })
  ]
})

module.exports = webpackConfig

在该示例中,我们将打包后的文件输出到了build/web目录下,并且将引用路径指定为了/web/

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:修改vue+webpack run build的路径方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue iview组件表格 render函数的使用方法详解

    Vue iView组件表格 render函数的使用方法详解 什么是 render 函数 在 Vue 中,render 函数是用来生成虚拟 DOM 的函数,它可以根据数据生成对应的 HTML 结构,并最终生成真实的 DOM 节点。 为什么需要 render 函数 在使用 iView 表格组件时,我们需要通过传入 columns、data 等参数来生成表格的列和…

    Vue 2023年5月28日
    00
  • Vue实现数字时钟效果

    下面是Vue实现数字时钟效果的完整攻略: 创建Vue项目 首先,我们需要创建一个Vue项目来实现我们的数字时钟效果。我们可以使用vue-cli快速创建一个项目,在命令行中输入: vue create vue-clock 这将会创建一个名为vue-clock的Vue项目。接着,进入项目目录并运行如下命令: cd vue-clock npm run serve …

    Vue 2023年5月29日
    00
  • 案例实操vue事件修饰符带你快速了解与应用

    案例实操Vue事件修饰符是开发Vue应用过程中必须了解的知识点之一。Vue事件修饰符可以帮助开发者轻松处理常见的DOM事件细节。本攻略将带你了解Vue事件修饰符的语法和应用场景,并通过两个简单的示例说明案例实操Vue事件修饰符的用法和实践。 一、什么是Vue事件修饰符 Vue事件修饰符是一种用于DOM事件处理的Vue指令,用于简化Vue中的事件处理。Vue事…

    Vue 2023年5月27日
    00
  • vue-element-admin 登陆及目录权限控制的实现

    下面为你详细讲解“vue-element-admin 登陆及目录权限控制的实现”的完整攻略。 1. 登陆流程 要实现登陆流程,首先需要安装相关依赖包: npm install axios js-cookie 其中,axios 是一个基于 Promise 的 HTTP 库,可用于浏览器和 Node.js,同时也是 Vue 官方推荐的 HTTP 请求库;js-c…

    Vue 2023年5月28日
    00
  • 关于Vue v-on指令的使用

    关于Vue v-on指令的使用 在Vue中使用v-on指令可以实现事件监听和处理,常用于页面交互中。下面详细介绍v-on指令的使用方法。 语法 v-on指令是Vue提供的一种事件绑定方法,语法如下: v-on:事件名="事件处理函数" 其中,事件名指绑定的事件名称,事件处理函数是一个在Vue实例中定义的方法。 示例说明 示例1:点击事件 …

    Vue 2023年5月27日
    00
  • vue2之vue.config.js最全配置教程

    下面就详细讲解一下 “vue2之vue.config.js最全配置教程”的完整攻略。 简介 vue.config.js 是 Vue CLI 3.x 中一个重要的配置文件,用于对项目进行全局的配置。这个文件不存在,需要手动创建,与 package.json 文件同级。通过 vue.config.js 文件的配置,我们可以实现很多高级功能,例如 Webpack …

    Vue 2023年5月27日
    00
  • 如何使用Vue3+Vite+TS快速搭建一套实用的脚手架

    下面我将对如何使用Vue3+Vite+TS快速搭建一套实用的脚手架进行详细讲解。 1. Vite简介 Vite是一个由Vue.js作者尤雨溪开发的基于ESM(ES模块)的构建工具,可以快速地搭建现代化的前端开发环境。它不像Webpack那样打包,而是通过利用浏览器原生支持ES模块的能力,直接加载ES模块的源代码,在开发中无需打包就能够快速地启动调试和热更新。…

    Vue 2023年5月28日
    00
  • 浅谈Vue响应式(数组变异方法)

    浅谈Vue响应式(数组变异方法) 什么是Vue响应式 Vue.js是一款轻量级的、渐进式的JavaScript框架,它采用数据驱动视图的思想,通过对数据的绑定,前端开发者可以更加方便的进行数据的处理和控制。Vue.js的核心理念是响应式编程,也就是当数据发生变化时,我们的视图会自动更新。 数组变异方法 Vue将一些常用的JavaScript数组操作方法进行了…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部