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
上次更新: 2022/04/15, 05:41:29
×