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

下面是修改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日

相关文章

  • nuxt 页面路由配置,主页轮播组件开发操作

    下面我将为您详细讲解”nuxt页面路由配置,主页轮播组件开发操作”的完整攻略。 Nuxt 页面路由配置 在 Nuxt 中,页面路由可以通过 pages 目录下的目录和文件来进行定义。例如,一个名为 home.vue 的文件就可以对应主页的路由。 以下是一个页面路由的基本结构示例: pages/–| home.vue–| about/—–| inde…

    Vue 2023年5月28日
    00
  • 详解Vue之事件处理

    详解Vue之事件处理 Vue.js 是一款流行的前端框架,它的事件处理能力非常强大。本文将详细讲解 Vue.js 中的事件处理,包括如何使用 v-on 指令绑定事件、如何传递参数和修饰符、以及如何使用自定义事件等。 绑定事件 在 Vue.js 中,我们可以使用 v-on 指令来绑定事件。省略了 v-on 直接写 @ 符号,作用相同,下面的几个示例中直接使用 …

    Vue 2023年5月27日
    00
  • Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)

    Vue组件间通信方法总结 Vue组件通信是Vue开发者必须掌握的技能之一。本文将总结Vue中组件间通信的各种方法,包括父子组件、兄弟组件及祖先后代组件间通信。 父子组件通信 父子组件通信是Vue中最常见的通信方式。下面分别介绍组件间通信的几种方法。 Props 在Vue中父组件可以通过Props向子组件传递数据,子组件通过props选项接收父组件传递过来的数…

    Vue 2023年5月28日
    00
  • vue Tooltip提示动态换行问题

    下面是“Vue Tooltip提示动态换行问题”的完整攻略: 问题描述 在使用Vue的Tooltip组件时,会出现文本过长的情况下无法自动换行,导致Tooltip显示不全的问题。 解决方法 我们可以通过slot和v-html指令来实现Tooltip的动态换行。 使用slot指令传递文本内容到Tooltip组件中。 <template> <d…

    Vue 2023年5月27日
    00
  • vue导出html、word和pdf的实现代码

    针对“vue导出html、word和pdf的实现代码”的完整攻略,我将结合Vue.js自身的特性及常用的第三方库,从以下几个方面进行讲解: Html导出 Vue.js的文本渲染是非常方便的,在页面上展示的数据,我们只需要利用Vue.js提供的模板语法即可。所以当我们需要导出html时,也可以利用这个特性来实现。 步骤如下: 创建一个带有数据的vue实例。 n…

    Vue 2023年5月27日
    00
  • 利用百度echarts实现图表功能简单入门示例【附源码下载】

    以下是利用百度echarts实现图表功能简单入门示例的完整攻略: 什么是百度echarts 百度echarts是一个基于HTML5 Canvas的可视化图表库,由百度开发并开源。它支持多种常用的图表类型,如折线图、柱状图、饼图等,而且提供了丰富的配置和交互方式,能够满足大部分图表需求。 步骤 1. 引入echarts库 在需要使用echarts的页面中,首先…

    Vue 2023年5月28日
    00
  • vue-electron中修改表格内容并修改样式

    要在Vue-Electron中修改表格内容并修改样式,我们可以使用以下步骤: 为表格创建数据源 在Vue-Electron中,我们通常使用vuex来管理数据。我们可以在vuex状态管理器中创建一个数组,该数组作为表格的数据源。以下是一个示例代码片段: const state = { tableData: [ { name: ‘John’, status: ‘…

    Vue 2023年5月29日
    00
  • Vue 2.0 侦听器 watch属性代码详解

    Vue 2.0 侦听器 watch属性代码详解 简介 Vue 2.0 中有个重要的特性——侦听器。在渲染过程中,Vue 会观察数据变化,并且自动更新 DOM。 在某些情况下,这不够灵活,我们需要执行一些自定义逻辑,这就是侦听器的用处了。 基础语法 Vue 中侦听器的基础语法是: watch: { // 监听的属性 property: { // 监听回调函数 …

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