[Vue CLI 3] 配置解析之 indexPath

vue.config.js 配置中有一个 indexPath 的配置,我们先看看它有什么用?

用来指定 index.html 最终生成的路径(相对于 outputDir)

先看看它的默认值:在文件 @vue/cli-service/lib/options.js


indexPath: joi.string()

默认值:


indexPath: ‘index.html‘

使用案例:

我们在 vue.config.js 中配置:


indexPath: ‘1/2/3/b.html‘

最终在编译之后的目录 dist(默认)下面会生成:

1/2/3/b.html 的文件,内部不会发生变化

我们看一下背后的实现:@vue/cli-service/lib/config/app.js 文件中

两层判断:

1、先判断是不会 product 环境


const isProd = process.env.NODE_ENV === ‘production‘
if (isProd) {}

2、是否配置了 indexPath


if (options.indexPath !== ‘index.html‘) {
}

通过内置的插件去修改路径,插件文件在 cli-service/lib/webpack/MovePlugin.js


webpackConfig
  .plugin(‘move-index‘)
  .use(require(‘../webpack/MovePlugin‘), [
    path.resolve(outputDir, ‘index.html‘),
    path.resolve(outputDir, options.indexPath)
  ])

这个对应的配置,默认的编译之后的目录是 dist,传入了 2 个路径:


/* config.plugin(‘move-index‘) */
new MovePlugin(
  ‘/Users/***/dist/index.html‘,
  ‘/Users/***/dist/1/2/3/b.html‘
)

我们看一下 webpack 4 下的插件是如何编写的:

1、它是 class 的方式:

内部包含了 constructor 和 apply(参数是 compiler)


module.exports = class MovePlugin {
  constructor () {}
  apply (compiler) {}
}

2、constructor 里面其实要处理传入的参数:


constructor (from, to) {
  this.from = from
  this.to = to
}

定义了一个 from,一个 to,然后其实就是把 from 通过 fs 的 moveSync 函数移动到 to 里面:

这里我们依赖了工具包:fs-extra


const fs = require(‘fs-extra‘)

具体流程如下:先判断 from 的路径是否存在


if (fs.existsSync(this.from)) {
  fs.moveSync(this.from, this.to, { overwrite: true })
}

3、apply 内部的结构呢


compiler.hooks.done.tap(‘move-plugin‘, () => {
    // ...
})

通过 compiler tap 来注册插件,这里的 done 是一个生命周期的钩子函数:编译完成


compiler.hooks.someHook.tap()

这里还有其他钩子:

  • run
  • beforeRun
  • compile
  • beforeCompile
  • afterCompile
  • emit
  • afterEmit

来源:https://segmentfault.com/a/1190000016267660

原文地址:https://www.cnblogs.com/lovellll/p/10138785.html

时间: 2024-08-01 18:45:43

[Vue CLI 3] 配置解析之 indexPath的相关文章

[Vue CLI 3] 配置解析之 css.extract

大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件: 核心是使用了插件 extract-text-webpack-plugin,方式如下: 第一步都是加载插件 const ExtractTextPlugin = require('extract-text-webpack-plugin') 这个插件的描述如下: Extract text from a bundle, or bundles, into a separate file. 然后配置如下:(省去了 rules

vue cli 3 查看项目 vue.config.js 的默认配置信息

vue cli 3 查看项目 vue.config.js 的默认配置信息 运行命令,在终端输出: npx vue-cli-service inspect 运行命令,将输出导入到文件:vue.config.detail.js: npx vue-cli-service inspect >> vue.config.detail.js 在文件:vue.config.detail.js 开头,添加:module.exports =,然后格式化即可查看. 原文地址:https://www.cnblogs.

vue cli 3.x 配置使用 sourceMap

项目使用vue cli 3.x搭建,没有了配置文件,如何更方便的查找到对应的scss文件,配置项目支持sourceMap方式? 分二步走: 1.项目根目录(不是src目录,不要搞错了)添加vue.config.js 2.vue.config.js内容如下: module.exports = { css: { sourceMap: true, // 开启 CSS source maps } } 记得要停止项目,再重新运行项目 npm run serve 不然你以为没有生效,以为我在忽悠你,根本没作

@vue/cli 3 安装搭建及 webpack 配置

首先卸载旧版1 npm uninstall vue-cli -g //or 2 yarn global remove vue-cli 再次安装 1 npm install -g @vue/cli 2 //or 3 yarn global add @vue/cl 查看版本 vue --version //or vue -V 创建项目vue create  my-project //项目名// Windows 上通过 minTTY 使用 Git Bash,交互提示符并不工作.  //你必须通过  

Vue CLI 3搭建vue+vuex 最全分析

一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue serve .vue ui 等命令) CLI 服务:@vue/cli-service是一个开发环境依赖.构建于 webpack 和 webpack-dev-server 之上(提供 如:serve.build 和 inspect 命令) CLI 插件:给Vue 项目提供可选功能的 npm 包 (如

vue cli中环境变量和模式

环境变量配置 环境变量可以在以下文件中配置: .env # 在所有的环境中被载入 .env.local # 在所有的环境中被载入,但会被 git 忽略 .env.[mode] # 只在指定的模式中被载入 .env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略 (.local优先于.env生效) 文件内部使用键值对的方式对变量进行配置 被载入的变量将会对 vue-cli-service 的所有命令.插件和依赖可用,同时为一个特定模式准备的环境文件的 (例如 .env.

使用vue cli开发项目中遇到的坑

一.部署文件 使用vue cli 开发项目,执行npm run build命令生成dist静态文件,将dist文件包放到服务器中即可. 刚接触webpack,不知道怎么部署前端文件,原以为需要将app文件上传,在 inux上安装node,以及npm install 一系列的包,捣鼓了很久,发现只需要执行 npm run build 将源码打包成一个静态文        文件即可,上传静态文件dist,将 controller指向index.html. 二.跨域问题 实行前后端分离,使用vue i

OpenStack配置解析库——oslo.config

OpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf)中的配置信息.下面先给一个high-level的过程说明一下如何使用这个库. OpenStack中配置文件的使用主要有以下几个步骤, step1. 正确配置各个服务主配置文件(.conf文件),在各个服务中完成. step2. 在要使用到配置文件的模块中声明这个模块将会用到的那些配置项(比如'au

如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库

译者按: 你可能npm人家的包过成千上万次,但你是否有创建,发布和使用过自己的npm包? 原文: How to create, publish and use your own VueJS Component library on NPM using @vue/cli 3.0 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 尽管我已经在工作上用了Vue.js一段时间,但我从不需要在npm上发布组件.但最近发现在不同的项目重写组件是件非