neo-cmp-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -0
- package/bin/neo.js +2 -0
- package/package.json +74 -0
- package/src/config/default.config.js +136 -0
- package/src/config/index.js +9 -0
- package/src/initData/defaultTemplate.html +13 -0
- package/src/initData/neo.config.js +99 -0
- package/src/module/index.js +244 -0
- package/src/module/inspect.js +40 -0
- package/src/module/main.js +109 -0
- package/src/module/neoInit.js +44 -0
- package/src/module/neoInitByCopy.js +37 -0
- package/src/oss/publish2oss.js +218 -0
- package/src/plugins/README.md +2 -0
- package/src/template/react-custom-widget-template/.editorconfig +10 -0
- package/src/template/react-custom-widget-template/.prettierrc.js +12 -0
- package/src/template/react-custom-widget-template/README.md +51 -0
- package/src/template/react-custom-widget-template/commitlint.config.js +59 -0
- package/src/template/react-custom-widget-template/neo.config.js +112 -0
- package/src/template/react-custom-widget-template/package.json +56 -0
- package/src/template/react-custom-widget-template/public/css/base.css +283 -0
- package/src/template/react-custom-widget-template/public/scripts/app/bluebird.js +6679 -0
- package/src/template/react-custom-widget-template/public/template.html +13 -0
- package/src/template/react-custom-widget-template/src/assets/css/common.scss +127 -0
- package/src/template/react-custom-widget-template/src/assets/css/mixin.scss +47 -0
- package/src/template/react-custom-widget-template/src/components/info-card/index.jsx +45 -0
- package/src/template/react-custom-widget-template/src/components/info-card/model.js +81 -0
- package/src/template/react-custom-widget-template/src/components/info-card/register.js +4 -0
- package/src/template/react-custom-widget-template/src/components/info-card/style.scss +67 -0
- package/src/template/react-custom-widget-template/src/preview.js +5 -0
- package/src/template/react-ts-custom-widget-template/.editorconfig +10 -0
- package/src/template/react-ts-custom-widget-template/.prettierrc.js +12 -0
- package/src/template/react-ts-custom-widget-template/README.md +53 -0
- package/src/template/react-ts-custom-widget-template/commitlint.config.js +59 -0
- package/src/template/react-ts-custom-widget-template/neo.config.js +106 -0
- package/src/template/react-ts-custom-widget-template/package.json +59 -0
- package/src/template/react-ts-custom-widget-template/public/css/base.css +283 -0
- package/src/template/react-ts-custom-widget-template/public/scripts/app/bluebird.js +6679 -0
- package/src/template/react-ts-custom-widget-template/public/template.html +13 -0
- package/src/template/react-ts-custom-widget-template/src/assets/css/common.scss +127 -0
- package/src/template/react-ts-custom-widget-template/src/assets/css/mixin.scss +47 -0
- package/src/template/react-ts-custom-widget-template/src/components/info-card/index.tsx +70 -0
- package/src/template/react-ts-custom-widget-template/src/components/info-card/plugin.ts +80 -0
- package/src/template/react-ts-custom-widget-template/src/components/info-card/register.ts +5 -0
- package/src/template/react-ts-custom-widget-template/src/components/info-card/style.scss +105 -0
- package/src/template/react-ts-custom-widget-template/src/components/list-widget/README.md +2 -0
- package/src/template/react-ts-custom-widget-template/src/components/list-widget/index.tsx +208 -0
- package/src/template/react-ts-custom-widget-template/src/components/list-widget/model.ts +92 -0
- package/src/template/react-ts-custom-widget-template/src/components/list-widget/register.ts +5 -0
- package/src/template/react-ts-custom-widget-template/src/components/list-widget/style.scss +350 -0
- package/src/template/react-ts-custom-widget-template/src/preview.tsx +37 -0
- package/src/template/react-ts-custom-widget-template/tsconfig.json +68 -0
- package/src/template/vue2-neo-custom-widget/.editorconfig +10 -0
- package/src/template/vue2-neo-custom-widget/.prettierrc.js +12 -0
- package/src/template/vue2-neo-custom-widget/README.md +52 -0
- package/src/template/vue2-neo-custom-widget/commitlint.config.js +59 -0
- package/src/template/vue2-neo-custom-widget/neo.config.js +122 -0
- package/src/template/vue2-neo-custom-widget/package.json +59 -0
- package/src/template/vue2-neo-custom-widget/public/css/base.css +283 -0
- package/src/template/vue2-neo-custom-widget/public/scripts/app/bluebird.js +6679 -0
- package/src/template/vue2-neo-custom-widget/public/template.html +13 -0
- package/src/template/vue2-neo-custom-widget/src/assets/css/common.scss +126 -0
- package/src/template/vue2-neo-custom-widget/src/assets/css/mixin.scss +47 -0
- package/src/template/vue2-neo-custom-widget/src/preview.js +9 -0
- package/src/template/vue2-neo-custom-widget/src/widgets/info-card/index.vue +131 -0
- package/src/template/vue2-neo-custom-widget/src/widgets/info-card/plugin.js +81 -0
- package/src/template/vue2-neo-custom-widget/src/widgets/info-card/register.js +8 -0
- package/src/utils/getConfigObj.js +18 -0
- package/src/utils/getEntries.js +54 -0
- package/src/utils/neoConfigInit.js +13 -0
- package/src/utils/neoParams.js +12 -0
- package/src/utils/pathUtils.js +23 -0
- package/src/utils/projectNameValidator.js +76 -0
- package/src/utils/replaceInFiles.js +47 -0
- package/src/utils/replaceInPackage.js +134 -0
- package/test/demo.js +3 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* package.json文件中替换指定字符串
|
|
6
|
+
* @param dir 项目目录
|
|
7
|
+
* @param oldStr 旧字符串
|
|
8
|
+
* @param newStr 新字符串
|
|
9
|
+
* @returns 替换结果对象: { success: boolean, message: string, filePath?: string, replaced?: boolean }
|
|
10
|
+
*/
|
|
11
|
+
function replaceInPackage(dir, oldStr, newStr) {
|
|
12
|
+
try {
|
|
13
|
+
// 检查目录是否存在
|
|
14
|
+
if (!fs.existsSync(dir)) {
|
|
15
|
+
return {
|
|
16
|
+
success: false,
|
|
17
|
+
message: `目录不存在: ${dir}`
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// 检查是否为目录
|
|
22
|
+
const stat = fs.statSync(dir);
|
|
23
|
+
if (!stat.isDirectory()) {
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
message: `指定路径不是目录: ${dir}`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 构建package.json的完整路径
|
|
31
|
+
const packageJsonPath = path.join(dir, 'package.json');
|
|
32
|
+
|
|
33
|
+
// 检查package.json文件是否存在
|
|
34
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
message: `package.json文件不存在: ${packageJsonPath}`
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// 读取package.json文件内容
|
|
42
|
+
let content = fs.readFileSync(packageJsonPath, 'utf8');
|
|
43
|
+
|
|
44
|
+
// 检查是否包含要替换的字符串
|
|
45
|
+
if (!content.includes(oldStr)) {
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
message: `package.json中未找到要替换的字符串: ${oldStr}`,
|
|
49
|
+
filePath: packageJsonPath,
|
|
50
|
+
replaced: false
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 执行全局替换
|
|
55
|
+
const newContent = content.replace(new RegExp(oldStr, 'g'), newStr);
|
|
56
|
+
|
|
57
|
+
// 检查是否有实际变化
|
|
58
|
+
if (content === newContent) {
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
message: '替换后内容无变化',
|
|
62
|
+
filePath: packageJsonPath,
|
|
63
|
+
replaced: false
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 写入替换后的内容
|
|
68
|
+
fs.writeFileSync(packageJsonPath, newContent, 'utf8');
|
|
69
|
+
|
|
70
|
+
// 统计替换次数
|
|
71
|
+
const matches = content.match(new RegExp(oldStr, 'g'));
|
|
72
|
+
const replaceCount = matches ? matches.length : 0;
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
message: `成功替换 ${replaceCount} 处字符串`,
|
|
77
|
+
filePath: packageJsonPath,
|
|
78
|
+
replaced: true
|
|
79
|
+
};
|
|
80
|
+
} catch (error) {
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
message: `replaceInPackage 运行失败: ${error.message}`
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 批量替换多个目录中的package.json文件
|
|
90
|
+
* @param dirs 目录数组
|
|
91
|
+
* @param oldStr 旧字符串
|
|
92
|
+
* @param newStr 新字符串
|
|
93
|
+
* @returns 批量替换结果
|
|
94
|
+
*/
|
|
95
|
+
function replaceInMultiplePackages(dirs, oldStr, newStr) {
|
|
96
|
+
const results = dirs.map((dir) => ({
|
|
97
|
+
dir,
|
|
98
|
+
result: replaceInPackage(dir, oldStr, newStr)
|
|
99
|
+
}));
|
|
100
|
+
|
|
101
|
+
const success = results.filter((r) => r.result.success).length;
|
|
102
|
+
const failed = results.length - success;
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
total: dirs.length,
|
|
106
|
+
success,
|
|
107
|
+
failed,
|
|
108
|
+
results
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 验证package.json文件格式是否正确
|
|
114
|
+
* @param filePath package.json文件路径
|
|
115
|
+
* @returns 验证结果: { valid: boolean, error?: string }
|
|
116
|
+
*/
|
|
117
|
+
function validatePackageJson(filePath) {
|
|
118
|
+
try {
|
|
119
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
120
|
+
JSON.parse(content);
|
|
121
|
+
return { valid: true };
|
|
122
|
+
} catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
valid: false,
|
|
125
|
+
error: `JSON格式错误: ${error.message}`
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
module.exports = {
|
|
131
|
+
replaceInPackage,
|
|
132
|
+
replaceInMultiplePackages,
|
|
133
|
+
validatePackageJson
|
|
134
|
+
};
|
package/test/demo.js
ADDED