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
};