1 | const { entry } = require('./webpack.dll.config')
|
2 | const fse = require('fs-extra')
|
3 | const fs = require('fs')
|
4 | const { dllVersion } = require('config').get('path')
|
5 |
|
6 | const getDllPkgsVersion = () => {
|
7 | const dllPkgs = Object.values(entry).reduce((prev, cur) => {
|
8 | prev.push(...cur)
|
9 | return prev
|
10 | }, [])
|
11 |
|
12 | const dllPkgsVersion =
|
13 | dllPkgs.reduce((prev, cur) => {
|
14 | let key = cur.split('/').filter(v => v)[0]
|
15 |
|
16 | prev[key] = require(`${key}/package.json`).version
|
17 | return prev
|
18 | }, {}) || {}
|
19 |
|
20 | return dllPkgsVersion
|
21 | }
|
22 |
|
23 | const createDllVersion = () => {
|
24 | const version = getDllPkgsVersion()
|
25 |
|
26 | fse.ensureFileSync(dllVersion)
|
27 | fse.writeJsonSync(dllVersion, version, { encoding: 'utf-8', space: 4 })
|
28 | }
|
29 |
|
30 | const getDllVersion = () => {
|
31 | if (!fs.existsSync(dllVersion)) {
|
32 | return {}
|
33 | } else {
|
34 | return fse.readJsonSync(dllVersion, { encoding: 'utf-8' })
|
35 | }
|
36 | }
|
37 |
|
38 | const isSame = (a, b) => {
|
39 | let akeys = Object.keys(a)
|
40 |
|
41 | let bkeys = Object.keys(b)
|
42 |
|
43 | return akeys.length === bkeys.length && akeys.every(v => a[v] === b[v])
|
44 | }
|
45 |
|
46 | const checkDllVersion = () => {
|
47 | const currentVersion = getDllPkgsVersion()
|
48 | const lastVersion = getDllVersion()
|
49 |
|
50 | return isSame(currentVersion, lastVersion)
|
51 | }
|
52 |
|
53 | module.exports = {
|
54 | getDllPkgsVersion,
|
55 | createDllVersion,
|
56 | getDllVersion,
|
57 | checkDllVersion
|
58 | }
|