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

yizhihongxing

当使用 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日

相关文章

  • 基于vuejs+webpack的日期选择插件

    下面是详细讲解基于vuejs+webpack的日期选择插件的完整攻略: 1. 准备工作 这个插件是基于vuejs和webpack开发的,所以使用前需要先安装这两个工具。 安装vuejs 安装vuejs可以使用npm命令,在终端中输入以下命令: npm install vue 安装webpack 安装webpack同样可以使用npm命令,在终端中输入以下命令:…

    Vue 2023年5月29日
    00
  • vue2 全局变量的设置方法

    当使用Vue.js开发时,我们可能需要在多个组件中使用相同的数据或方法,这时候设置全局变量就可以为我们节省不少代码。下面为大家提供一下Vue2全局变量的设置方法: 使用Vue.prototype Vue.prototype 允许我们向 Vue 构造器的原型上添加自定义的属性或方法,这样我们在开发过程中就能在组件中轻松地访问它们。 示例代码: // 在 mai…

    Vue 2023年5月27日
    00
  • vue-cli的webpack模板项目配置文件分析

    下面是“vue-cli的webpack模板项目配置文件分析”的完整攻略: 一、什么是vue-cli的webpack模板项目配置文件? vue-cli是官方提供的Vue.js项目脚手架,通过vue-cli可以快速创建一个基于Vue.js的项目脚手架,而webpack是一种模块化管理工具,可以将多个JavaScript文件打包到一个文件,以便于浏览器加载和解析。…

    Vue 2023年5月28日
    00
  • 详解Vue如何监测数组的变化

    详解Vue如何监测数组的变化。Vue对数组的变化是有所监测的,包括以下操作:push、pop、shift、unshift、splice、sort、reverse。下面我们对这些操作进行分析: push和pop Vue对于数组的push、pop操作,可以通过观察数组的length属性来监测数组的变化。当进行push或pop操作时,Vue会检测到数组的lengt…

    Vue 2023年5月28日
    00
  • vue项目如何引入json数据

    下面是详细讲解如何在Vue项目中引入json数据的完整攻略。 1.准备json数据 首先,你需要准备一个json数据文件。这个json数据可以是本地文件,也可以是远程API返回的数据。下面是一个简单的本地json数据示例(假设文件名为data.json): { "name": "John Doe", "age…

    Vue 2023年5月28日
    00
  • vue项目中自动导入svg并愉快的使用方式

    Vue项目中自动导入SVG并愉快的使用方式的攻略需要涉及到以下几个步骤: 1. 安装相关依赖 svg-sprite-loader:用于对SVG进行打包处理,将SVG图标精灵化。 svgo-loader:对SVG进行压缩和优化,减少SVG的文件大小。 npm install svg-sprite-loader svgo-loader -D 2. 配置webpa…

    Vue 2023年5月28日
    00
  • 详解Vue的键盘事件

    详解Vue的键盘事件 Vue.js是一个流行的JavaScript框架,它减轻了开发者在构建大型Web应用程序方面的工作负担,并将应用程序的数据和界面分离。Vue.js还提供了一些内置的事件绑定选项,其中包括与键盘事件相关的选项。 键盘事件介绍 键盘事件是用户通过打字机输入字符的过程中触发的事件。Vue.js提供了四种键盘事件: @keydown: even…

    Vue 2023年5月28日
    00
  • vue 绑定对象,数组之数据无法动态渲染案例详解

    下面详细讲解“vue 绑定对象,数组之数据无法动态渲染案例详解”的攻略。 问题背景 在 Vue.js 中,我们通常会使用数据绑定来实现页面动态渲染。但是,在某些情况下,我们可能会遇到无法动态渲染的问题。例如,绑定的对象或数组中的数据被修改后,页面没有自动更新。这可能会导致用户体验不佳或功能无法正常使用。 原因分析 出现数据无法动态渲染的问题,通常有以下几种原…

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