美文网首页
VUE学习之路三 项目配置介绍

VUE学习之路三 项目配置介绍

作者: 圣艾修 | 来源:发表于2019-02-13 16:38 被阅读4次

webpack简介


文件配置介绍

  • package.json

package.json总览全局,您可以在这里配置相当多的信息。

"name": "项目名称,不能以.(点)或者_(下划线)开头,不能包含大写字",  
"version": "项目版本号如:1.0.0",
"description": "项目描述"
"author": 作者名字
"private": 是否私有
"scripts": 配置控制台命令缩写,如下配置build命令
  "scripts": { 
    "build": "node build/build.js"// 使用node build/build.js打包与npm run build 效果一致
  },
"dependencies": 项目依赖库 
"devDependencies": 开发依赖库
"engines": 指定node和npm版本
"browserslist": 浏览器限制
  • build.js


    8.png

当我们运行npm run build的时候,本质上执行了node build/build.js文件。
process.stdout.write作用是打印输出。
colors : 让打包的时候有颜色。
module : 去掉内置模块信息
children :去掉子模块
chunks : 增加包信息(设置为 false 能允许较少的冗长输出)
chunkModules : 去除包里内置模块的信息
spinner是个带图标的日志输出,我们可以在打包的过程中增加一些提示,修改如下:

const spinner = ora({
    color: 'red',
    text: 'spinner的颜色设置为了红色并开始打包,请稍等一会儿'
})
spinner.start()

10.png

然后在const rm = require('rimraf')的回调中,使用spinner.stop()停止。

   if (stats.hasErrors()) {
      console.log(chalk.red('出错啦.\n'))
      process.exit(1)
    }
    console.log(chalk.yellow(
      '  Tip: built files are meant to be served over an HTTP server.\n' +
      '  Opening index.html over file:// won\'t work.\n'
    ))
    console.log(chalk.blue('打包成功'))
  • index.js
    'use strict' 使用严格模式
    assetsSubDirectory: 'static',// 静态资源目录,一般存放css,js,image等文件
    assetsPublicPath: '/',// 根目录
    proxyTable: {},// 解决跨域问题,后面解读
    host: 'localhost', // 地址
    port: 8080, // 端口号设置,端口号占用出现问题可在此处修改
    autoOpenBrowser: false,//是否在编译(输入命令行npm run dev)后打开http://localhost:8080/页面,
    errorOverlay: true, // 浏览器错误提示
    notifyOnErrors: true,// 跨平台错误提示
    poll: false, // 使用文件系统(file system)获取文件改动的通知devServer.watchOptions
    cacheBusting: true, // 使缓存失效
    cssSourceMap: true // 代码压缩后进行调bug定位将非常困难,于是引入sourcemap记录压缩前后的位置信息记录,当产生错误时直接定位到未压缩前的位置
      },
    useEslint: 是否使用Eslint Loader
    devtool: 选择source-map模式 开发环境推荐:cheap-module-eval-source-map,产环境推荐:cheap-module-source-map
    //unit的gzip命令用来压缩文件,gzip模式下需要压缩的文件的扩展名有js和css
    productionGzip: false,
    assetsRoot: path.resolve(__dirname, '../dist') 引号内设置打出来的包名和位置
    productionSourceMap: 是否生成调试文件

同理的,我们可以依照上面的配置,再配置一个build(生产环境设置)。

提示:此目录下包含:dev.env.js,test.env.js,prod.env.js,index.js这四个文件,dev代表开发环境配置,test代表测试环境配置,prod代表发布环境配置,你可以根据你的项目开发环境,配置相应的信息,比如项目的域名,如果在开发/测试/发布三个环境不一样,那可以配置到对应的js文件中。在build/build.js目录下的process.env.NODE_ENV确定使用那个环境配置。

在dev.env.js中可以配置请求地址,这时我们将proxyTable中的proxyTable设为"{}"
如果展示了跨域的问题,我们可以用proxyTable解决。
修改proxyTable如下:

 proxyTable: {
    '/anyWord': {
    target: 'your url',
    changeOrigin: true,
    pathRewrite: {
      '^/anyWord': ''
    },
    cookieDomainRewrite: 'localhost',

其中changeOrigin标识是否跨域,pathRewrite表示替换关键字(这里设置的anyWord会被默认拼接到请求的最后),target表示接口域名。
如果并不想所有的请求都使用代理,可以使用bypass。

bypass: function(req, res, proxyOptions) {
      if (req.headers.accept.indexOf("otherRequest") !== -1) {
        return "url + otherRequest";
      }
    }

代理可以设置多个。

  • check-version.js
    主要功能:
    1、检测node版本
    2、检测npm版本

  • utils.js
    主要功能:
    1、css加载器的相关配置
    2、对.vue文件之外的css文件或css预处理器文件进行处理

  • vue-loader
    主要功能:
    根据当前的开发环境对webpack中的vue-loader进行配置。

  • webpack.dev.conf.js
    配置webpack编译入口。
    配置webpack输出路径、名称和静态文件路径。
    配置不同模块的处理规则与命名规则。
    以下代码就是设置视频文件小于10kb,转换为base64文件。

  {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[hash:7].[ext]')
        }
      },

  • webpack.dev.conf.js
    主要功能
    1、将hot-reload相关的代码添加到entry chunks
    2、合并基础的webpack配置
    3、使用styleLoaders
    4、配置Source Maps
    5、配置webpack插件

  • webpack.prod.conf.js.
    主要功能
    合并基础的webpack配置
    使用styleLoaders
    配置webpack的输出
    配置webpack插件
    gzip模式下的webpack插件配置
    webpack-bundle分析

    // 构建要编译输出的index.html,并在文件中嵌入资源文件
    new HtmlWebpackPlugin({
    // 输出的HTML文件名
    filename: config.build.index,
    // 模板文件路径
    template: 'index.html',
    // 设置为true或body可以将js代码放到<body>元素最后
    // 设置为head将js代码加到<head>里面
    // 设置为false所有静态资源css和JavaScript都不会注入到模板文件中
    inject: true,
    minify: {
       // 删除注释
       removeComments: true,
       // 合并空白
       collapseWhitespace: true,
       // 删除属性的引号
       removeAttributeQuotes: true
      },
      // 通过CommonsChunkPlugin控制chunks在html文件中添加的顺序  
      // 设置为dependency即按照它们之间的依赖关系添加
      chunksSortMode: 'dependency'
    }),
    // webpack将公共模块打包的vendor.js里面使用CommonsChunkPlugin将vendor.js分离到单独的文件
    new webpack.optimize.CommonsChunkPlugin({
      // 公共模块名字
      name: 'vendor',
      minChunks: function(module, count) {
        return (
          module.resource &&
          /\.js$/.test(module.resource) &&
          module.resource.indexOf(
            path.join(__dirname, '../node_modules')
          ) === 0
        )
      }
      
    // 使用CommonsChunkPlugin可以保证如果我们的第三方插件没有变动,在打包的时候可以不被重新的打包
    // 待到上线后就不会重新的加载以达到缓存的目的
    // 我们会获得webpack执行时间和输出一份json文件保存chunk的id和最终引用它们的文件印射关系
    new webpack.optimize.CommonsChunkPlugin({
      name: 'manifest',
      chunks: ['vendor']
    }),
    // 复制static文件夹内的静态资源到打包好的文件中
    // 具体的路径是之前我们设置的"config.build.assetsSubDirectory"
    new CopyWebpackPlugin([{
      from: path.resolve(__dirname, '../static'),
      to: config.build.assetsSubDirectory,
      ignore: ['.*']
    }])

    // 如果开启了Gzip压缩,使用以下配置
    if (config.build.productionGzip) {
       var CompressionWebpackPlugin = require('compression-webpack-plugin')
       webpackConfig.plugins.push(
         new CompressionWebpackPlugin({
         asset: '[path].gz[query]',
         algorithm: 'gzip',
         test: new RegExp(
           '\\.(' + config.build.productionGzipExtensions.join('|') +
        ')$'
      ),
      threshold: 10240,
      minRatio: 0.8
    })
  )
}

VUE学习之路四 创界第一个界面

相关文章

  • VUE学习之路三 项目配置介绍

    webpack简介 文件配置介绍 package.json package.json总览全局,您可以在这里配置相当...

  • Vue

    vue-cli启动项目 vue项目文件介绍 build:webpack配置 config:环境变量的配置 stat...

  • webstorm搭建vue项目详细过程

    WebStorm可以自动创建Vue项目,非常方便,下面将详细介绍如何创建vue项目。注意:首先需要配置好vue.j...

  • vue学习笔记(3)——router

    githubvue学习笔记(1)主要介绍vue项目的创建vue学习笔记(2)主要介绍项目的基本设置,如axios设...

  • parcel-vue

    使用parcel + vue的项目简单介绍 介绍 Parcel 手动搭建 快速构建 介绍 传统的webpack配置...

  • vue学习笔记(2)——基础设置

    githubvue学习笔记(1)主要介绍vue项目的创建vue学习笔记(3)主要介绍vue的router简单用法对...

  • vue 3.0 项目搭建

    这篇文章主要介绍下vue-cli3.0项目搭建,项目结构和配置等整理一下,分享给大家。 一、介绍 Vue CLI ...

  • vue-element-admin 多级目录(嵌套路由)配置

    项目中基于vue-element-admin的多级路由配置,这里做一下记录 介绍 vue-element-admi...

  • vue3+element-plus配置cdn

    1,项目配置 最近在做一个项目,项目配置版本如下: vue:3.2.6 vue-router:4.0.11 vue...

  • vue项目中配置ECharts

    目录 介绍 5 分钟上手 echarts echarts 基础配置 在 vue 项目中使用 echarts (一)...

网友评论

      本文标题:VUE学习之路三 项目配置介绍

      本文链接:https://www.haomeiwen.com/subject/sepdeqtx.html