'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
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
const fs = require('fs')
const path = require('path')
 
const glob = require('glob')
const loaderUtils = require('loader-utils')
 
const isWin = /^win/.test(process.platform)
const normalizePath = path => (isWin ? path.replace(/\\/g, '/') : path)
 
module.exports = function loader(source) {
  const options = loaderUtils.getOptions(this)
  const baseDir = options['base']
  const extendsDir = options['extends']
 
  const exportCode = []
  const extendsFiles = []
  // extends目录均导出
  glob.sync('**/*.js', {
    cwd: extendsDir
  }).forEach(file => {
    if (file === 'index.js') {
      return
    }
    extendsFiles.push(file)
    exportCode.push(`export * from 'uni-sub-platform-api/${normalizePath(file)}'`)
  })
  //base目录中有,extends无的导出
  glob.sync('**/*.js', {
    cwd: baseDir
  }).forEach(file => {
    if (file === 'index.js') {
      return
    }
    if (!extendsFiles.includes(file)) {
      exportCode.push(`export * from 'uni-platform-api/${normalizePath(file)}'`)
    }
  })
  // console.log(exportCode.join('\n'))
  return exportCode.join('\n')
}