๐Ÿ“ฆ theajack / sener

๐Ÿ“„ package-utils.js ยท 67 lines
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67/*
 * @Author: chenzhongsheng
 * @Date: 2023-02-22 12:16:35
 * @Description: Coding something
 */

const rootPkg = require('../../package.json');
const { copyFile, traverseDir, resolveRootPath } = require('../helper/utils');
const { name, handlerBuildPackage, packageMain, packageModule } = require('../build.config');

function buildPackageName (dir) {
    if (!dir) return name;
    return dir === name ? dir : `${name}-${dir}`;
}
function initSinglePackageInfo (dir, isDev = false) {
    copyFile({
        src: `#${dir}/package.json`,
        json: true,
        handler (package) {
            const packageName = buildPackageName(dir);

            if (isDev) {
                package.main = 'src/index.ts';
                package.typings = 'src/index.ts';
                package.module = 'src/index.ts';
            } else {
                package.main = `dist/${packageName}.${packageMain || 'iife'}.js`;
                package.module = `dist/${packageName}.${packageModule || 'esm'}.js`;
                package.typings = `dist/${packageName}.d.ts`;
                if (handlerBuildPackage) handlerBuildPackage(package, dir, packageName);
            }
            [
                'description', 'author', 'repository',
                'license', 'publishConfig'
            ].forEach(name => {
                package[name] = rootPkg[name];
            });
            return package;
        }
    });

    copyFile({ src: '@README.md', dest: `#${dir}/README.md` });
    copyFile({ src: '@LICENSE', dest: `#${dir}/LICENSE` });
    copyFile({ src: '@scripts/helper/.npmignore', dest: `#${dir}/.npmignore` });

    copyFile({
        src: '@tsconfig.json',
        dest: `#${dir}/tsconfig.json`,
        json: true,
        handler (tsconfig) {
            tsconfig.include = [ 'src/**/*' ];
            tsconfig.compilerOptions.rootDir = '../..';
            return tsconfig;
        }
    });
}
function initPackageInfo (isDev) {
    traverseDir(resolveRootPath('packages'), (dir) => {
        initSinglePackageInfo(dir, isDev);
    });
}

module.exports = {
    initPackageInfo,
    buildPackageName,
    initSinglePackageInfo
};