Vue 脚手架(打包工具)的理解 - 配置文件理解

这篇具有很好参考价值的文章主要介绍了Vue 脚手架(打包工具)的理解 - 配置文件理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序言

Vue 脚手架是 Vue 作为一个前端开发项目的最核心点,将JavaScriptCSSHTML这几种前端自动整合,极大的简化了前端开发工作。

没有 Vue 脚手架,就没有 Vue ,这是一定的,Java 语言和C语言都需要编译,那么你可以将 Vue 脚手架看作是伪编译器吧,或者是伪解释器,当然伪解释器比较准确点。

个人理解

在笔者看来,Vue 项目有时会出现两个问题,一个是旧版本的 Vue 脚手架,一个是新版本的Vue 脚手架,笔者不太清楚哪些 Vue脚手架版本是算是旧版,还是新版,但是很明确的知道,部分Vue 项目的的确确会出现一种情况,那就是没有 public 目录的情况,当遇到这种情况,的确会出现额外的问题需要解决,问题在于 index.html 文件的放置问题,比如新版 Vue 脚手架正常情况下,index.html 文件都会在 Vue 项目创建时,便已被放置在 public 目录下,但是旧版 Vue 脚手架,却会直接将 index.html文件放置在 Vue 项目的根目录下,在我看来,有些不规范,对于强迫症而言,的确有些不舒服。

笔者尝试修改旧版 Vue 脚手架 index.html 路径问题思路如下:

  1. 修改 process.env.BASE_URL,但涉及源码比较深入,不宜操作,舍弃

  2. 关于开发环境和生产环境下的自定义 index.html 路径问题,但是打包时容易出错,无法正常打包,这一点看问题1 的报错,有解决方法。(推荐)

下面是笔者在无 public 目录情况下,遇到的 Vue 项目开发问题集锦。

如下问题出现的前提:Vue项目创建后,没有 public 目录的情况:

问题 1 新建 public 目录,修改其打包路径问题

(已解决,记录一下解决过程)

开发环境index.html文件路径配置

新建了 public 目录,并将 index.html 目录,移动到 public 目录内,并修改 webpack.dev.conf.js开发环境配置文件)文件内的 HtmlWebpackPlugin 配置,如下所示

Vue 脚手架(打包工具)的理解 - 配置文件理解

 new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './public/index.html',
      inject: true
    }),

成功在本地开发环境运行成功(cnpm run dev),并显示在本地浏览器上,在webpack.prod.conf.js 文件(生产环境配置文件)内设置了一样的配置。

当然笔者不保证是一样的配置路径,笔者这里的是相对路径配置,所以如果你打包时,会出现如下报错,那么仔细研究下,路径问题,到底是'./public/index.html'还是 '../public/index.html'

报错:

Vue 脚手架(打包工具)的理解 - 配置文件理解

ERROR in   Error: Child compilation failed:
  Entry module not found: Error: Can't resolve 'E:\VueProject\public\index.html' in 'E:\VueProject\testproject':
  Error: Can't resolve 'E:\VueProject\public\index.html' in 'E:\VueProject\testpriject'

问题2 favicon 图标的放置问题

如果有 public 目录,那么正常情况下,我们都能将 favicon 图标放置在 public 目录下,当然这一点在 index.html 文件内需要我们配置好 favicon 的路径,如下:

<link rel="icon" href="<%= BASE_URL %>favicon.ico">

但是很遗憾,我们无法如此,会遇到报错 Vue Template execution failed: ReferenceError: BASE_URL is not defined

当然,我们也不用这么麻烦,只需要将 favicon.ico 的图标文件,放到 static 文件就行了,打包的时候,就不会出错了,当然,这里笔者的 index.html 配置如下所示:

<link rel="icon" href="<%= htmlWebpackPlugin.options.url %>/static/favicon.ico">

不是所谓的

<link rel="icon" href="<%= htmlWebpackPlugin.options.url %>favicon.ico">

当然,如果实在是强迫症的,想要将其图标文件放到 public 目录下,可以研究下 CopyWebpackPlugin 插件

Vue 脚手架(打包工具)的理解 - 配置文件理解
该插件的作用在于,收集静态文件到指定的打包路径位置,所以应该可以打包 public 目录下的静态文件。如下解决问题2 参考链接4 02-02模块化作业

Vue 脚手架(打包工具)的理解 - 配置文件理解

当然,上面只是启发,具体的实现是在 webpack.prod.conf.js 文件(生产环境配置文件),开发环境的配置也是如此(webpack.dev.conf.js

1、生产环境打包配置 webpack.prod.conf.js

(注意看是 config.build.assetsSubDirectory

// copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.build.assetsSubDirectory,
        ignore: ['.*']
      },
      {
        from: path.resolve(__dirname, '../public'),
        to: config.build.assetsSubDirectory,
        ignore: ['.*']
      }
    ])

笔者发现了一点不好的是,如果将 index.html 和 favicon.ico 文件放到 public 目录内,那么打包时,也会顺便把 index.html 复制两份,一份是在 Vue 打包的 dist 根目录下的,一份是在 static 目录内,有些冗余不规范且麻烦,要手动删除。
Vue 脚手架(打包工具)的理解 - 配置文件理解

所以这里还需要配置一个忽略 index.html 的设置。如下:

// copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.build.assetsSubDirectory,
        ignore: ['.*']
      },
      {
        from: path.resolve(__dirname, '../public'),
        to: config.build.assetsSubDirectory,
        ignore: ['index.html']
      }
    ])

2、开发环境 webpack.dev.conf.js 配置:

(注意看是 config.dev.assetsSubDirectory

// copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      },
      {
        from: path.resolve(__dirname, '../public'),
        to: config.dev.assetsSubDirectory,
        ignore: ['index.html']
      }
    ])

关于自动清除上一次打包遗留的文件,我觉得不需要去专门安装 CleanWebpackPlugin,打包时(cnpm run buildcnpm run build:prod),Vue 脚手架会自动删除上一次的打包文件,所以完全没必要。

assetsPublicPath 按默认的就好,默认是 '/'

这里的 assetsPublicPath 配置关于 public 目录完全没有关联的,关联的是 URL前端的公共路径,所以有点误导人

Vue 脚手架(打包工具)的理解 - 配置文件理解

解决问题2 参考链接

1. Vue Template execution failed: ReferenceError: BASE_URL is not defined

2. Template execution failed ReferenceError BASE_URL is not defined

3. Template execution failed: ReferenceError: BASE_URL is not defined

4. 02-02模块化作业

5. webpack入门(六)——html-webpack-plugin

6. vuecli3.0 htmlWebpackPlugin 报 ReferenceError: BASE_URL is not defined 错误

7. vue-cli脚手架项目中public和src/assets的区别

8. Vue CLI 3 public 目录没用吗

9. vue@cli3项目模板怎么使用public目录下的静态文件

10. vue项目中的public、static及指定不编译文件问题怎么解决

11. 我创建的项目里没有public文件

12. vue项目打包需要修改的路径问题

13. vue项目中引用public下面的文件

14. vue-cli2、vue-cli3脚手架详细讲解

对本问题2 无效的参考链接

1. vue项目设置浏览器icon图标

2. vue中添加favicon 图标 (3种方法)

3. 大白话Vue之publicPath

4. vue项目中配置favicon图标

5. vue项目添加favicon的几种方式文章来源地址https://www.toymoban.com/news/detail-464620.html

到了这里,关于Vue 脚手架(打包工具)的理解 - 配置文件理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue 脚手架文件结构及加载过程浅谈

    1.1  全局安装 @vue/cli  npm install -g @vue/cli 1.2 切换到创建项目的目录,执行 vue create projectname 1.3 选择符合自己要求的项进行Y/N,最终生成项目文件 package.json :这是一个重要的配置文件,用于定义项目的依赖项、脚本命令和其他元数据。它包含了项目的名称、版本号、作者等

    2024年02月11日
    浏览(46)
  • 使用Vue脚手架配置代理服务器的两种方式

    本文主要介绍使用Vue脚手架配置代理服务器的两种方式 注意:Vue脚手架给我们提供了两种配置代理服务器的方式,各有千秋,使用的时候只能二选一,不能同时使用 除了cros和jsonp,还有一种代理方式,这种用的相对来说也很多, 一般代理服务器 这个概念很好理解,相当于生

    2024年02月02日
    浏览(69)
  • 【vue2第八章】工程化开发和使用脚手架和文件结构

    vue工程化开发 使用脚手架VUE CLI: 1,核心包传统开发模式:基于js/html/css直接引入核心包开发vue。 2,工程化开发。基于构建工具如(webpack)的环境中开发vue。 vue cli是什么: vue cli是一个vue官方提供的一个全局的命令工具. 可以帮助我们快速的创建一个开发vue项目的标准化基础

    2024年02月10日
    浏览(42)
  • 【Vue3 知识第二讲】Vue3新特性、vue-devtools 调试工具、脚手架搭建

    1.1 重写双向数据绑定 1.1.1 Vue2 基于Object.defineProperty() 实现 数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 把 Vue 中的核心方法 defineReactive 做一些简化如下: Vue通过defineReactive方法实现对需要观察的对象的每个属性进行监控。dep对象就相当于一

    2024年02月10日
    浏览(40)
  • Vue学习计划-Vue2--VueCLi(二)vuecli脚手架创建的项目内部主要文件分析

    1. 补充: 什么叫单文件组件? 一个文件中只有一个组件 vue-cli 创建的项目中, .vue 的文件都是单文件组件,例如 App.vue 2. 进入分析 1. package.json : 项目依赖配置文件: 如图,我们说主要的属性: name : 项目的名称 version : 项目版本 scripts : 脚本入口 serve : 启动项目命令 build :

    2024年02月04日
    浏览(72)
  • 10-Vue技术栈之脚手架配置代理(解决跨域问题)+ GitHub用户搜索案例

    ​ 在vue.config.js中添加如下配置: 说明: 优点:配置简单,请求资源时直接发给前端(8080)即可。 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资

    2024年02月07日
    浏览(46)
  • 【vue脚手架配置代理+github用户搜索案例+vue项目中常用的发送Ajax请求的库+slot插槽】

    下载axios 引用axios: import axios from \\\'axios\\\' 解决跨域方法: 1 cors: 2 jsonp:用的少,只能解决get请求的跨域问题 3 配置一个代理服务器 配置一个代理服务器方式一: 开启8080代理服务器方式:nginx(较复杂,需借助后端知识) 、vue-cli(重点)。 1 第一步:先通过cmd打开两台服务器 打

    2024年01月20日
    浏览(37)
  • 通过 http-server 运行刚打包出来的脚手架项目

    这里 我打包了自己的vue项目 react其实也一样 如果我直接 打开打包出来的 dist 下面的index.html 会出现白屏资源找不到 或者跨域等问题 这个问题其实配个nginx也能解决 但是其实如果只是想做个测试 nginx就太麻烦了 我们可以通过npm指令 全局安装一个http-server 终端执行 安装好依赖

    2024年02月09日
    浏览(44)
  • vue-cli脚手架创建创建的项目打包后无法正常打开报 Failed to load resource: net::ERR_FILE_NOT_FOUND错误

    亲爱的小伙伴们,你们最近是否有遇到用使用最新的脚手架打包项目后index.html文件无法正常打开,然后控制台报错的情况呢,不要担心,这个坑今天被我踩到了并且被我解决了,下边就让我来给大家分享一下经验吧! 1.找到vue.config.js文件,进行如下配置 即添加一行配置:

    2024年02月15日
    浏览(48)
  • Vue(Vue脚手架)

    Vue官方提供脚手架平台选择最新版本: 可以相加兼容的标准化开发工具(开发平台) 禁止:最新的开发技术版本和比较旧版本的开发平台   Vue CLI 🛠️ Vue.js 开发的标准工具 https://cli.vuejs.org/zh/ c:cmmand l:line i:interface 命令行接口工具   在cmd中查看vue是否存在cli  全局安

    2024年02月01日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包