可视化构建

50 阅读1分钟

痛点

实际开发过程中,经常会被问到:项目在xx环境部署了没?什么时候部署的?用的xx组件是哪个版本...

组件版本我们可以看下程序,就知道了。但什么时候部署的,那得去找运维或现场实施问,很麻烦。

解决方案

我们不妨把常用到的信息在控制台输出,这样不仅简便,而且准确。

输出日志可以包含:

  • 项目名称
  • 环境
  • 构建时间
  • 指定包版本

build-log.js

新建生成日志文件build-log.js

function genLog({ title, content }) {
  const args = [
    `%c ${title} %c ${content} `,
    `padding: 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060;`,
    `padding: 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e;`
  ]
  console.info(...args)
}
export function buildLogInfo() {
  try {
    genLog({ title: 'Env', content: process.env.NODE_ENV })
    genLog({ title: 'ProjectName Build Time', content: BUILDTIME }) // 全局变量
    genLog({ title: 'Package Version', content: VERSION })
  } catch (error) {
    console.error(error)
  }
}
DefinePlugin

这里BUILDTIMEVERSION是在构建打包时定义的,由于项目是基于VUE CLI3脚手架,只需要在vue.config.js中配置如下:

const { dependencies } = require('./package.json')
config.plugin('define').tap(args => {
  args[0]['BUILDTIME'] = JSON.stringify(new Date().toLocaleString())
  args[0]['VERSION'] = JSON.stringify(dependencies['package-xxx'])
  return args
})

这里其实还是用的webpack.DefinePlugin

new webpack.DefinePlugin({
  BUILDTIME: JSON.stringify(new Date().toLocaleString()),
  VERSION: JSON.stringify('xxx')
})
format specifiers

在上面构建日志的方法genLog%c是个格式说明符

image.png

说下我们用到的%c

const style = 'background-color:darkblue; color:white; font-style:italic;'
console.log("%cHooray", style);

它的意思是会将第二个样式参数应用于第一个输出参数上。

入口文件

在入口文件main.js中引入生成日志函数,执行即可。

import { buildLogInfo } from './utils/build-log.js'
buildLogInfo()

效果

打开浏览器控制台,就可以看到:

image.png

如果你需要关注更多的项目信息,按例新增即可。