umi插件
# 手写一个umi插件
在项目根目录新建文件,文件名为addCsssLink.js
代码:
/**
* 处理css
* @param {object} api umi的入口对象
*/
let fs = require('fs')
let path = require('path')
let p = path.resolve(__dirname, '../dist')
export default (api) => {
api.onBuildSuccess(() => {
fs.readdir(p, (err, files) => {
if (err) {
return console.log('err', err)
}
let reg = /^(antd|default)(\S+)(\.css)$/
// files 是dist目录下的所有文件, 过滤拿到需要使用的css,
files = files.filter(item => reg.test(item))
// 处理为link标签字符串
files = files.map(item => `<link rel="stylesheet" type="text/css" href="/${item}">`)
// 之后会是使用这个标签做分隔符 ,这里需要添加上
files.unshift('</title>')
// console.log('files', files)
// 读取到index.html 内容
fs.readFile(path.join(p, 'index.html'), {flag: 'r'}, (err, data) => {
data = data.toString()
data = data.split('</title>')
// 解析到文件
let [first, secound] = data
files.unshift(first)
files.push(secound)
// 将拼装好的文件写入index.html
fs.writeFile(path.join(p, 'index.html'),files.join(''), (err) => {
if (err) {
throw new Error(err)
}
console.log('css insert ok')
})
})
})
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
上次更新: 2022/04/15, 05:41:29