vue-cli脚手架-bulid下的配置文件

当使用 Vue.js 开发项目时,经常会使用到 Vue CLI 脚手架工具来初始化项目,并在 build 时自动生成配置文件来进行编译、打包等操作。以下是 Vue CLI 脚手架中 bulid 下的配置文件的详细解析:

1. 配置文件的作用

Vue CLI 脚手架的 build 目录下存放的是一些 webpack 的配置文件,这些配置文件主要用于在生产环境下对代码进行打包、压缩、混淆等处理。这些处理使得项目可以在生产环境下得到更好的性能表现。该目录包含以下配置文件:

  • webpack.base.conf.js: webpack 基础配置文件,主要定义通用配置;
  • webpack.prod.conf.js: webpack 生产环境配置文件,主要定义生产环境下的打包配置。

2. webpack.base.conf.js

webpack.base.conf.js 是 Vue CLI 脚手架代码打包的基础配置文件,该文件主要定义了项目在开发和打包时通用的配置信息,包括 entry 入口、output 输出、loader 加载器、plugin 插件等。以下是该文件的主要配置项:

2.1 entry

entry 是指项目的入口文件,也就是代码执行的起点。该配置项主要指定了 webpack 如何查找项目中的入口文件,可以是单个文件,也可以是多个文件。示例:

entry: {
   app: './src/main.js'
}

以上代码将项目的入口文件指定为 ./src/main.js。

2.2 output

output 是指项目的输出配置,包括输出文件名称、文件夹路径、资源文件公共路径等。主要用于指定打包后的代码输出方式、位置等信息。示例:

output: {
  path: config.build.assetsRoot,
  filename: utils.assetsPath('js/[name].[chunkhash].js'),
  chunkFilename: utils.assetsPath('js/[id].[chunkhash].js'),
  publicPath: process.env.NODE_ENV === 'production'
    ? config.build.assetsPublicPath
    : config.dev.assetsPublicPath
}

以上代码指定 webpack 打包后的输出路径,其中文件名称包含 chunkhash 等信息。

2.3 module

module 配置项用于定义各种文件类型的处理方式,包括图片、CSS、JS 等文件。通过指定不同的 Loader 进行不同类型的文件加载和解析。示例:

module: {
  rules: [
    {
      test: /\.(js|vue)$/,
      loader: 'eslint-loader',
      enforce: 'pre',
      include: [resolve('src'), resolve('test')],
      options: {
        formatter: require('eslint-friendly-formatter')
      }
    },
    {
      test: /\.vue$/,
      loader: 'vue-loader',
      options: vueLoaderConfig
    },
    {
      test: /\.js$/,
      loader: 'babel-loader',
      include: [resolve('src'), resolve('test')]
    },
    {
      test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
      loader: 'url-loader',
      options: {
        limit: 10000,
        name: utils.assetsPath('img/[name].[hash:7].[ext]')
      }
    },
    {
      test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
      loader: 'url-loader',
      options: {
        limit: 10000,
        name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
      }
    },
    {
      test: /\.(scss|sass)$/,
      use: [
        'style-loader',
        'css-loader',
        'sass-loader'
      ]
    }
  ]
}

以上代码指定了 JS、vue、图片、字体、Sass 文件等的加载方式及配置。

2.4 resolve

resolve 和 module 配置项作用相似,也用于配置 webpack 如何处理模块,是一种配置优化方式。resolve 包含 alias、extensions 等属性,需要通过配置找到正确的文件路径。示例:

resolve: {
  extensions: ['.js', '.vue', '.json'],
  alias: {
    'vue$': 'vue/dist/vue.esm.js',
    '@': resolve('src'),
  }
}

以上代码将 vue 模块指向 vue.esm.js 文件,@ 符号代表根目录的 src 目录。

3. webpack.prod.conf.js

webpack.prod.conf.js 是 Vue CLI 脚手架在生产环境下的打包配置文件,包含了 webpack.base.conf.js 中的所有配置信息,同时还具有一些针对生产环境的特殊配置项。以下是该文件的主要配置项:

3.1 entry

entry 配置项与 webpack.base.conf.js 配置项一样,用于定义项目的入口文件。

3.2 output

output 配置项与 webpack.base.conf.js 配置项一样,用于定义项目的输出路径及格式。

3.3 module

module 配置项与 webpack.base.conf.js 配置项一样,用于配置项目中各种文件的处理方式。

3.4 plugins

plugins 是指 webpack 的插件,可用于执行更多的任务,例如压缩、混淆、文件复制等操作。以下是常用的插件:

  • HtmlWebpackPlugin:用于自动生成 index.html 文件,可设置模板文件及加载 CSS、JS 等文件;
  • MiniCssExtractPlugin:用于提取 CSS 代码到外部样式文件中;
  • OptimizeCSSPlugin:用于压缩、合并 CSS 文件;
  • UglifyJsPlugin:用于压缩 JS 代码。

示例:

plugins: [
  // http://vuejs.github.io/vue-loader/en/workflow/production.html
  new webpack.DefinePlugin({
    'process.env': require('../config/prod.env')
  }),
  new UglifyJsPlugin({
    uglifyOptions: {
      compress: {
        warnings: false
      }
    },
    sourceMap: config.build.productionSourceMap,
    parallel: true
  }),
  // extract css into its own file
  new MiniCssExtractPlugin({
    filename: utils.assetsPath('css/[name].[contenthash].css'),
    // Setting the following option to `true` would enable css source maps.
    // This is useful for inspecting errors, but incurs significant performance penalty.
    // In the production build, we actually omit css source maps because you don't need them
    // generate source map for css
    options: {
      sourceMap: config.build.productionSourceMap,
      hmr: process.env.NODE_ENV === 'development'
    }
  }),
  // Compress extracted CSS. We are using this plugin so that possible
  // duplicated CSS from different components can be deduped.
  new OptimizeCSSPlugin({
    cssProcessorOptions: config.build.productionSourceMap
      ? { safe: true, map: { inline: false } }
      : { safe: true }
  }),
  // generate dist index.html with correct asset hash for caching.
  // you can customize output by editing /index.html
  // see https://github.com/ampedandwired/html-webpack-plugin
  new HtmlWebpackPlugin({
    filename: config.build.index,
    template: './index.html',
    inject: true,
    minify: {
      removeComments: true,
      collapseWhitespace: true,
      removeAttributeQuotes: true
      // more options:
      // https://github.com/kangax/html-minifier#options-quick-reference
    },
    // necessary to consistently work with multiple chunks via CommonsChunkPlugin
    chunksSortMode: 'dependency'
  }),
  // keep module.id stable when vendor modules does not change
  new webpack.HashedModuleIdsPlugin(),
  // enable scope hoisting
  new webpack.optimize.ModuleConcatenationPlugin(),
  // split vendor js into its own file
  new webpack.optimize.SplitChunksPlugin({
    name: 'vendor',
    minChunks: function (module) {
      // any required modules inside node_modules are extracted to vendor
      return (
        module.resource &&
        /\.js$/.test(module.resource) &&
        module.resource.indexOf(
          path.join(__dirname, '../node_modules')
        ) === 0
      )
    }
  }),
  ...
]

以上是对 webpack.prod.conf.js 文件主要配置项的详细介绍。

结语

对于一个 Vue CLI 脚手架项目来说,bulid 目录下的配置文件是非常重要的。通过逐个配置 webpack 的相关选项,可以使得我们的项目在生产环境下得到更好的性能表现。如果你想要更加深入地理解 webpack 配置文件的更多内容,可以查看官方文档或相关的书籍和教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli脚手架-bulid下的配置文件 - Python技术站

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

相关文章

  • Vue声明式导航与编程式导航及导航守卫和axios拦截器全面详细讲解

    好的。首先,我们来详细讲解Vue的声明式导航与编程式导航。 Vue声明式导航与编程式导航 Vue Router 提供了两种导航方式:声明式导航和编程式导航。 声明式导航 声明式导航是通过在模板中使用 <router-link> 组件来进行导航的。例如: <router-link to="/home">Home&lt…

    Vue 2023年5月27日
    00
  • Vue.js学习笔记之修饰符详解

    Vue.js是一款流行的JavaScript框架,使用Vue.js可以简化Web应用程序的开发。其中修饰符是Vue.js提供的一种高级技术,可以扩展指令的行为。本文将为大家提供Vue.js修饰符的详解。 修饰符是什么 在Vue.js中,指令是带有前缀v-的特殊属性。指令带有参数和修饰符,指令的行为可以由参数和修饰符来控制。修饰符可以在指令后面的点号后面添加,…

    Vue 2023年5月27日
    00
  • vue如何加载本地json数据

    加载本地的JSON数据通常有两种方法: 方法一:通过ajax方式 1.首先,在Vue.js工程的目录下建立一个data目录,将要加载的 JSON 文件复制到这个目录下。 2.在组件中,使用ajax工具去请求这个文件,并在回调函数中将请求到的数据赋值给组件的数据变量。我们可以在组件的生命周期的某个时刻(如created)中调用这个ajax请求。 <tem…

    Vue 2023年5月28日
    00
  • ES6知识点整理之Proxy的应用实例详解

    ES6知识点整理之Proxy的应用实例详解 什么是Proxy Proxy是ES6中新增的一个用于拦截外部对对象的访问和改变操作的API,可以对目标对象进行劫持、代理和拦截。在Proxy对象被使用时,会对基础的API进行拦截,以达到监控、控制和修改其行为的目的。 Proxy的基本用法 当我们使用Proxy的时候,可以使用以下语法构造一个Proxy对象: let…

    Vue 2023年5月28日
    00
  • Vue组合式API–setup中定义响应式数据的示例详解

    什么是Vue组合式API–setup?Vue 3.0中引入了新的组合式API–setup。setup选项是一个新的组件选项,用来代替Vue 2.x版本中的created和beforeCreate选项。setup选项中可以使用Vue3.0的新特性,如响应式数据、计算属性、watcher等。 Vue组合式API–setup中定义响应式数据的示例 在Vue …

    Vue 2023年5月28日
    00
  • Vue下的国际化处理方法

    下面我将为你详细讲解Vue下的国际化处理方法。 什么是Vue国际化 Vue国际化是指将应用程序的文本和其他可本地化内容(例如日期、时间、货币、图片、数字等)自动翻译成用户的首选语言或区域设置的过程。在Vue中,可以使用Vue-i18n插件轻松实现国际化。Vue-i18n是一种提供文本翻译和本地化方案的Vue插件。 安装Vue-i18n 在Vue项目中安装Vu…

    Vue 2023年5月28日
    00
  • vue中实现拖拽排序功能的详细教程

    为了详细讲解“Vue中实现拖拽排序功能的详细教程”,下面我将提供以下步骤: 步骤一:使用插件 Vue中实现拖拽排序功能,可以使用一些优秀的插件,例如vuedraggable和sortablejs,我们选择使用vuedraggable插件。 npm install vuedraggable –save 步骤二:加载插件并设置参数 在需要实现拖拽排序功能的组件…

    Vue 2023年5月27日
    00
  • 解读vue生成的文件目录结构及说明

    下面是详细讲解“解读vue生成的文件目录结构及说明”的完整攻略: 1. 前言 Vue.js 是当下前端开发中最热门的前端框架之一,它是一套构建用户界面的渐进式框架,易于上手、灵活性强、使用广泛。一个 Vue.js 项目的开发离不开以下文件目录结构: build config node_modules src static test 2. build目录 该目…

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