美文网首页
webpack多页面脚手架开发说明

webpack多页面脚手架开发说明

作者: 悟空弜厸 | 来源:发表于2020-10-16 11:08 被阅读0次

webpack-basic开发文档

GitHub链接

指令

  • npm run server 启动开发环境服务器
  • npm run dev 启动development环境构建(代码未压缩, 未做代码分离(提取复用模块),保留source-map)
  • npm run prod 启动production环境构建(代码压缩,代码分离,去除source-map)
  • npm run start 以dist目录为根目录启动一个本地服务器
  • npm run analys 启动构建分析并且启动一个可视化的构建数据分析网址

IS_DEV

src开发目录下的全局变量true为development环境false为production环境

import动态加载

import('vconsole').then(({default: VConsole})=>{
  this.Console = new VConsole();
})

webpack动态加载友情链接

pages

配置多个页面的html和入口文件

app.config.js

module.exports = {
  pages: [
    {
      name: 'index',// chunk名(输出时的html,js,css名字)
      html: 'pages/index/index.html',// html文件路径
      entry: 'pages/index/index.js'// html对应入口文件
    },
    ...
  ]
}

expose

expose 用来把模块暴露到全局变量。这个功能对支持依赖其他全局库的库时很有用。

app.config.js

module.exports = {
 expose: [
    {
      module_name: 'jquery',// 模块名
      name: ['jquery', '$'],// 变量名
    },
    {
      module_name: 'PxLoader',// 模块名
      name: ['PxLoader'],// 变量名
    },
    ...
  ]
}

注意: 模块必须在你的 bundle 中被 require() 过,否则他们将不会被暴露。

assets

资源管理,这些都是默认配置

app.config.js

module.exports = {
 assets: {
   // 不超过5KB的图片转换成base64
   limit: 5 * 1024,
   // 构建资源输出目录
   outputPath: '',
   // 构建资源输出路径(用作cdn)默认为空
   publicPath: ''
   // publicPath: 'http://localhost:8080/images'
 }
}

hash

我们知道,浏览器为了优化体验,会有缓存机制。如果浏览器判断当前资源没有更新,就不会去服务端下载,而是直接使用本地资源。在webpack的构建中,我们通常使用给文件添加后缀值来改名以及提取公共代码到不会改变的lib包中来解决新资源缓存问题。首先我们来介绍一下通过文件名称是怎么工作的。
hash介绍

app.config.js

module.exports = {
 /**
 * 资源hash值,防浏览器缓存,客户端不更新
 * none: 不启用hash
 *语法-- 
 * hash: hash是跟整个项目的构建相关,只要项目里有文件更改,整个项目构建的hash值都会更改,并且全部文件都共用相同的hash值
 * chunkhash: chunkhash根据不同的入口文件进行依赖文件解析、构建对应的chunk,生成对应的哈希值。
 * contenthash: 文件内容改变则生成新的hash值
 * :Number为hash长度
 * -为文件名与hash直接的拼接字符
 */
 hash: '-[contenthash:4]'// 默认值
}

drop_console

production环境下构建时是否去除console默认为true

app.config.js

module.exports = {
 drop_console: false
}

proxy

解决开发环境下接口跨域

app.config.js

module.exports = {
 proxy: {
   '/common': {
     // 指定开发环境代理domain
     target: 'http://tool.h5-x.com',
     // production模式下优先使用prod,prod没有值使用target
     prod: 'http://tool.h5-x.com',
     // 开发环境是否跨域
     changeOrigin: true,
     // 重写路径
     pathRewrite: { '^/common': '' }
   }
 }
}

注意: /common 开头的字符串都会被规则匹配。

outputPath

构建输出目录

app.config.js

module.exports = {
 // outputPath: '/dist', 构建到当前磁盘下的dist目录
 // outputPath: 'D:/dist', 构建到D盘下的dist目录
 // outputPath: 'dist', 构建到当前工作目录下的dist 默认
}

相关文章

网友评论

      本文标题:webpack多页面脚手架开发说明

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