mh-two-thousand-and-two
2024-04-12 3d2ec2fd0578d3ba0a414b0cc4e4a2ae60878596
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
44
const path = require('path');
const fs = require('fs-extra');
 
module.exports = {
    resolveToContext(dirName, relativePath, context) {
        if (relativePath.startsWith('/')) {
            return `${context}${relativePath}`;
        }
        return path.resolve(dirName, relativePath);
    },
    // 获取某个路径的脚本文件
    transformScript: function (url, value, existsSync = fs.existsSync) {
        url = `${url}/${value}`;
        const ext = path.extname(url);
        // 如果存在后缀,表示当前已经是一个文件
        const exts = ['.js', '.wxs'];
        if (exts.includes(ext) && existsSync(url)) {
            return url;
        }
        // a/b/c => a/b/c.js
        const jsFile = url + '.js';
        if (existsSync(jsFile)) {
            return jsFile;
        }
 
        // a/b/c => a/b/c.js
        const wxsFile = url + '.wxs';
        if (existsSync(wxsFile)) {
            return wxsFile;
        }
 
        // a/b/c => a/b/c/index.js
        const jsIndexFile = path.join(url, 'index.js');
        if (existsSync(jsIndexFile)) {
            return jsIndexFile;
        }
 
        const wxsIndexFile = path.join(url, 'index.wxs');
        if (existsSync(wxsIndexFile)) {
            return wxsIndexFile;
        }
        return null;
    }
};