create-a-npm 0.0.3 → 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/LICENSE +13 -1
- package/bin.mjs +2 -0
- package/package.json +29 -49
- package/src/ask-for-name/carryRange.mjs +1 -0
- package/src/ask-for-name/createCatalog.mjs +1 -0
- package/src/ask-for-name/index.mjs +1 -0
- package/src/ask-for-name/nameIsNotEligible.mjs +1 -0
- package/src/ask-for-name/read-name.mjs +1 -0
- package/src/command.mjs +1 -0
- package/src/createChild/createChangeLog.mjs +1 -0
- package/src/createChild/createIndex.mjs +1 -0
- package/src/createChild/createLicense.mjs +1 -0
- package/src/createChild/createPackage.mjs +1 -0
- package/src/createChild/createReadMe.mjs +1 -0
- package/src/createChild/createRollup.mjs +1 -0
- package/src/createChild/createRollupEg.mjs +1 -0
- package/src/createChild/createScripts.mjs +1 -0
- package/src/createChild/createTest.mjs +1 -0
- package/src/createChild/createTs.mjs +1 -0
- package/src/createChild/index.mjs +1 -0
- package/src/createNpm.mjs +1 -0
- package/src/createRange/createAction.mjs +1 -0
- package/src/createRange/createLicense.mjs +1 -0
- package/src/createRange/createPackage.mjs +1 -0
- package/src/createRange/createReadMe.mjs +1 -0
- package/src/createRange/createScripts/checkVersionInstall.mjs +1 -0
- package/src/createRange/createScripts/detectChanges.mjs +1 -0
- package/src/createRange/createScripts/index.mjs +1 -0
- package/src/createRange/createScripts/pub.mjs +1 -0
- package/src/createRange/createScripts/workflowDispatch.mjs +1 -0
- package/src/createRange/createTs.mjs +1 -0
- package/src/createRange/eslint-config.mjs +1 -0
- package/src/createRange/git-ignore.mjs +1 -0
- package/src/createRange/index.mjs +1 -0
- package/src/createRange/markdown.mjs +1 -0
- package/src/createRange/prettier.mjs +1 -0
- package/src/custom/appendDiy.mjs +1 -0
- package/src/custom/askForDependencies.mjs +1 -0
- package/src/custom/askForInitDependencies.mjs +1 -0
- package/src/custom/askForLastConfig.mjs +1 -0
- package/src/custom/askForWithBin.mjs +1 -0
- package/src/custom/choose-email/choose.mjs +1 -0
- package/src/custom/choose-email/createByName.mjs +1 -0
- package/src/custom/choose-email/getGitConfigUserEmail.mjs +1 -0
- package/src/custom/choose-email/index.mjs +1 -0
- package/src/custom/choose-email/readInputEmail.mjs +1 -0
- package/src/custom/choose-url/choose.mjs +1 -0
- package/src/custom/choose-url/createByName.mjs +1 -0
- package/src/custom/choose-url/index.mjs +1 -0
- package/src/custom/choose-url/readInputUrl.mjs +1 -0
- package/src/custom/choose-user-name/choose.mjs +1 -0
- package/src/custom/choose-user-name/getGitConfigUserName.mjs +1 -0
- package/src/custom/choose-user-name/getMachineUserName.mjs +1 -0
- package/src/custom/choose-user-name/index.mjs +1 -0
- package/src/custom/choose-user-name/readInputUserName.mjs +1 -0
- package/src/custom/index.mjs +1 -0
- package/src/custom/readLocalValue.mjs +1 -0
- package/src/data-store/eslintText.mjs +1 -0
- package/src/data-store/gitIgnoreText.mjs +1 -0
- package/src/data-store/index.mjs +1 -0
- package/src/data-store/licenseText.mjs +1 -0
- package/src/data-store/origin-dependencies.mjs +1 -0
- package/src/data-store/prettierText.mjs +1 -0
- package/src/dog.mjs +1 -0
- package/src/installDependencies.mjs +1 -0
- package/src/main.mjs +1 -0
- package/src/qqi.mjs +1 -0
- package/src/simple/createAction.mjs +1 -0
- package/src/simple/createPub.mjs +1 -0
- package/src/simple/createRollupEg.mjs +1 -0
- package/src/simple/eslint.mjs +1 -0
- package/src/simple/gitIgnore.mjs +1 -0
- package/src/simple/index.mjs +1 -0
- package/src/simple/markdown.mjs +1 -0
- package/src/simple/package.mjs +1 -0
- package/src/simple/prettier.mjs +1 -0
- package/src/simple/rollup.mjs +1 -0
- package/src/simple/tsconfig.mjs +1 -0
- package/src/utils.mjs +1 -0
- package/src/waiting.mjs +1 -0
- package/README.md +0 -20
- package/bin/index.js +0 -3
- package/mjs/index.mjs +0 -17
- package/mjs/src/askForName.mjs +0 -90
- package/mjs/src/command.mjs +0 -17
- package/mjs/src/createNpm.mjs +0 -38
- package/mjs/src/custom.mjs +0 -40
- package/mjs/src/data.mjs +0 -65
- package/mjs/src/library/index.mjs +0 -26
- package/mjs/src/library/indexTs.mjs +0 -23
- package/mjs/src/library/srcIndexTs.mjs +0 -14
- package/mjs/src/package/eslint.mjs +0 -24
- package/mjs/src/package/index.mjs +0 -21
- package/mjs/src/package/package.mjs +0 -74
- package/mjs/src/package/prettier.mjs +0 -53
- package/mjs/src/package/readme.mjs +0 -54
- package/mjs/src/package/rollup.mjs +0 -116
- package/mjs/src/package/tsconfig.mjs +0 -48
- package/mjs/src/test/index.mjs +0 -31
- package/mjs/src/test/testFunction.mjs +0 -25
- package/mjs/src/tools.mjs +0 -25
- package/types/index.d.ts +0 -1
- package/types/src/askForName.d.ts +0 -4
- package/types/src/command.d.ts +0 -11
- package/types/src/createNpm.d.ts +0 -4
- package/types/src/custom.d.ts +0 -21
- package/types/src/data.d.ts +0 -25
- package/types/src/library/index.d.ts +0 -4
- package/types/src/library/indexTs.d.ts +0 -2
- package/types/src/library/srcIndexTs.d.ts +0 -2
- package/types/src/library/testFunction.d.ts +0 -7
- package/types/src/package/eslint.d.ts +0 -5
- package/types/src/package/index.d.ts +0 -5
- package/types/src/package/package.d.ts +0 -2
- package/types/src/package/prettier.d.ts +0 -8
- package/types/src/package/readme.d.ts +0 -6
- package/types/src/package/rollup.d.ts +0 -8
- package/types/src/package/tsconfig.d.ts +0 -8
- package/types/src/test/index.d.ts +0 -8
- package/types/src/test/testFunction.d.ts +0 -9
- package/types/src/tools.d.ts +0 -14
package/mjs/src/askForName.mjs
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { command } from './command.mjs';
|
|
2
|
-
import data from './data.mjs';
|
|
3
|
-
import { _p, Color, dirEmpty, cursorMoveUp, cursorAfterClear } from 'a-node-tools';
|
|
4
|
-
import { mkdirSync } from 'node:fs';
|
|
5
|
-
|
|
6
|
-
/** Inquire about the current package name \
|
|
7
|
-
* 查看是否当前有项目名
|
|
8
|
-
*/
|
|
9
|
-
async function askForName() {
|
|
10
|
-
/** The name of the package to be created \
|
|
11
|
-
* 将创建的包的名称
|
|
12
|
-
*/
|
|
13
|
-
let commandName = await command.question({
|
|
14
|
-
text: '您即将创建的包名',
|
|
15
|
-
tip: '请使用空格/连字符(-)做分隔符',
|
|
16
|
-
private: true,
|
|
17
|
-
});
|
|
18
|
-
/** Clean up spaces and convert hyphens
|
|
19
|
-
*
|
|
20
|
-
* 清理空格即转换连字符 */
|
|
21
|
-
commandName = commandName.trim().replace(/\s+/gm, '-');
|
|
22
|
-
/** */
|
|
23
|
-
if (commandName.length == 0 || commandName[0].match(/[^a-z]/)) {
|
|
24
|
-
_p(Color.fromRgb('您的输入为空或首字符非法 \n', '#ff0'));
|
|
25
|
-
await aslForAgainOrQuit('您的输入有误,请重试', '重试或退出');
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const dirIsEmpty = dirEmpty(commandName);
|
|
29
|
-
/** Detected that the current directory contains a package with the same name
|
|
30
|
-
*
|
|
31
|
-
* 检测出当前目录下包含同名包且不为空
|
|
32
|
-
*/
|
|
33
|
-
if (dirIsEmpty == 0) {
|
|
34
|
-
_p(Color.fromRgb('当前目录下存在非空同名文件夹 \n', '#ff0'));
|
|
35
|
-
await aslForAgainOrQuit('更换为其他名称', '更换为其他的名称或退出');
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* 当前任务已完成,避免数据污染,需要 return 结束
|
|
39
|
-
*/
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
/** 先进行赋值 */
|
|
43
|
-
data.name = commandName;
|
|
44
|
-
/*** 根据刚才的判断参看是否为非 */
|
|
45
|
-
if (dirIsEmpty == -1) {
|
|
46
|
-
/** In the current state,
|
|
47
|
-
* it indicates that there is no folder with the same name in the working directory.
|
|
48
|
-
* In this case, create an empty folder
|
|
49
|
-
*
|
|
50
|
-
* 当前状态下表明该工作目录下并没有同名文件夹,这时候创建一个空的文件夹 */
|
|
51
|
-
mkdirSync(commandName, { recursive: true });
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
*
|
|
56
|
-
* 问询当前不符合的情况下是否要重试或直接退出
|
|
57
|
-
*
|
|
58
|
-
* @param askMessage {@link String} 询问的文本
|
|
59
|
-
*
|
|
60
|
-
* @param [text=''] {@link String} 展示的文本
|
|
61
|
-
*
|
|
62
|
-
* @returns Promise<void>> {@link Promise} 没有返回值
|
|
63
|
-
*/
|
|
64
|
-
async function aslForAgainOrQuit(askMessage, text = '') {
|
|
65
|
-
const tip = [askMessage, '退出'];
|
|
66
|
-
text = text == '' ? `${askMessage}或退出` : text;
|
|
67
|
-
const select = await command.question({
|
|
68
|
-
text,
|
|
69
|
-
tip,
|
|
70
|
-
private: true,
|
|
71
|
-
}, true);
|
|
72
|
-
// Cover the printed information on top
|
|
73
|
-
// 覆盖上面的打印信息
|
|
74
|
-
cursorMoveUp(2);
|
|
75
|
-
cursorAfterClear();
|
|
76
|
-
// If the user chooses to exit
|
|
77
|
-
// 倘若用户选择了退出
|
|
78
|
-
if (select === tip[1]) {
|
|
79
|
-
// _p('好的,即将退出');
|
|
80
|
-
command.end;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
// The user calls himself to restart the query after selecting Continue
|
|
84
|
-
// 用户选择了继续后调用自己重新开始问询
|
|
85
|
-
await askForName();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export { askForName as default };
|
package/mjs/src/command.mjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Command } from 'a-command';
|
|
2
|
-
|
|
3
|
-
/****************************************************************************
|
|
4
|
-
* @Author lmssee
|
|
5
|
-
* @Email lmssee@outlook.com
|
|
6
|
-
* @ProjectName create-a-npm
|
|
7
|
-
* @FileName command.ts
|
|
8
|
-
* @CreateDate 周五 08/30/2024
|
|
9
|
-
* @Description 一个由 `a-command` 创建的 command 对象
|
|
10
|
-
****************************************************************************/
|
|
11
|
-
const command = new Command('create-a-npm');
|
|
12
|
-
/** 暂未配置自定义项,后续会跟上 */
|
|
13
|
-
// command.bind({ 'custom <cm> (自定义)': [] });
|
|
14
|
-
// 执行,并在触发 -h、-v 时直接结束应用
|
|
15
|
-
command.run().isEnd.end;
|
|
16
|
-
|
|
17
|
-
export { command };
|
package/mjs/src/createNpm.mjs
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import askForName from './askForName.mjs';
|
|
2
|
-
import custom from './custom.mjs';
|
|
3
|
-
import data from './data.mjs';
|
|
4
|
-
import { packageIndex } from './package/index.mjs';
|
|
5
|
-
import { testFile } from './test/index.mjs';
|
|
6
|
-
import { src } from './library/index.mjs';
|
|
7
|
-
|
|
8
|
-
/****************************************************************************
|
|
9
|
-
* @Author lmssee
|
|
10
|
-
* @Email lmssee@outlook.com
|
|
11
|
-
* @ProjectName crate-a-npm
|
|
12
|
-
* @FileName createNpm.ts
|
|
13
|
-
* @CreateDate 周五 08/30/2024
|
|
14
|
-
* @Description 创建 npm 主要内容
|
|
15
|
-
* 该操作出现在命名完成后
|
|
16
|
-
****************************************************************************/
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* 开始根据数据创建包 */
|
|
20
|
-
async function createNpm() {
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* 检测是否遗漏了询问包名
|
|
24
|
-
*
|
|
25
|
-
* 倘若并没有配置 name 属性值,则
|
|
26
|
-
* */
|
|
27
|
-
if (data.name == '') {
|
|
28
|
-
await askForName();
|
|
29
|
-
await custom();
|
|
30
|
-
await createNpm();
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
packageIndex();
|
|
34
|
-
src();
|
|
35
|
-
testFile();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export { createNpm };
|
package/mjs/src/custom.mjs
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import './command.mjs';
|
|
2
|
-
import { runOtherCode, cursorMoveUp } from 'a-node-tools';
|
|
3
|
-
|
|
4
|
-
/****************************************************************************
|
|
5
|
-
* @Author lmssee
|
|
6
|
-
* @Email lmssee@outlook.com
|
|
7
|
-
* @FileName custom.ts
|
|
8
|
-
* @Date 周三 08/28/2024
|
|
9
|
-
* @Description
|
|
10
|
-
****************************************************************************/
|
|
11
|
-
/*** 自定义插件的安装 */
|
|
12
|
-
// import { homedir } from 'node:os';
|
|
13
|
-
/** TODO
|
|
14
|
-
*
|
|
15
|
-
* 后期这里要添加 配置文件的读取和配置
|
|
16
|
-
*
|
|
17
|
-
* 思路:
|
|
18
|
-
* - 从 node:os 的 homedir 获取用户的文件夹目录
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* 自定义
|
|
24
|
-
*/
|
|
25
|
-
async function custom() {
|
|
26
|
-
const { data } = await runOtherCode({ code: 'git config user.name' });
|
|
27
|
-
console.log(data?.replace(/(.*)\n$/, '$1'));
|
|
28
|
-
cursorMoveUp(3);
|
|
29
|
-
/** 用户文件的根目录 */
|
|
30
|
-
// const userDir: string = homedir();
|
|
31
|
-
/** 判断当前文件是否存在(应该是存在的吧,这里验证有点多此一举) */
|
|
32
|
-
// const testDir = dirEmpty(userDir) > -1;
|
|
33
|
-
// if (testDir) {
|
|
34
|
-
// console.log(userDir);
|
|
35
|
-
// console.log(dirEmpty(userDir));
|
|
36
|
-
// }
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { custom as default };
|
package/mjs/src/data.mjs
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { initializeFile, getDirectoryBy, readFileToJsonSync, pathJoin } from 'a-node-tools';
|
|
2
|
-
import { basename } from 'node:path';
|
|
3
|
-
|
|
4
|
-
/****************************************************************************
|
|
5
|
-
* @Author lmssee
|
|
6
|
-
* @Email lmssee@outlook.com
|
|
7
|
-
* @ProjectName create-a-npm
|
|
8
|
-
* @FileName data.ts
|
|
9
|
-
* @CreateDate 周五 08/30/2024
|
|
10
|
-
* @Description 数据中心
|
|
11
|
-
* 当配置包名时,后自动创建包的工作路径
|
|
12
|
-
****************************************************************************/
|
|
13
|
-
/** 初始化当前工作文件路径 */
|
|
14
|
-
const [__dirname] = initializeFile();
|
|
15
|
-
/** 根据当前被调用文件查找当前包的 package.json 文件配置 */
|
|
16
|
-
let cwd = getDirectoryBy('package.json', 'file', __dirname);
|
|
17
|
-
/** 这里好像难以避免 cwd 为 undefined */
|
|
18
|
-
if (cwd == undefined) {
|
|
19
|
-
cwd = process.cwd();
|
|
20
|
-
}
|
|
21
|
-
/** 读取当前包的 package.json 文件内容 */
|
|
22
|
-
const packageJsonData = readFileToJsonSync(pathJoin(cwd, 'package.json'));
|
|
23
|
-
/** 导出构建数据 */
|
|
24
|
-
var data = {
|
|
25
|
-
/** 工作目录 */
|
|
26
|
-
cwd: '',
|
|
27
|
-
/** 创建文件的路径 */
|
|
28
|
-
fileName(str) {
|
|
29
|
-
return pathJoin(this.cwd, str);
|
|
30
|
-
},
|
|
31
|
-
/** 项目名称
|
|
32
|
-
*
|
|
33
|
-
* 该值在 askForName 中进行赋值
|
|
34
|
-
*/
|
|
35
|
-
get name() {
|
|
36
|
-
return this.package.name;
|
|
37
|
-
},
|
|
38
|
-
set name(name) {
|
|
39
|
-
let finalName;
|
|
40
|
-
/** 将创建路径储存起来 */
|
|
41
|
-
this.cwd = name;
|
|
42
|
-
/** 查看创建路径和基础根路径是否相同 */
|
|
43
|
-
if (basename(name) == name) {
|
|
44
|
-
finalName = name;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
finalName = basename(name);
|
|
48
|
-
}
|
|
49
|
-
this.package.name = finalName;
|
|
50
|
-
},
|
|
51
|
-
/** 是否携带 npx 指令
|
|
52
|
-
* 该值将在 custom 过程中进行赋值 */
|
|
53
|
-
bin: false,
|
|
54
|
-
/** 包中需要的内容 */
|
|
55
|
-
package: {
|
|
56
|
-
/**包名称 */
|
|
57
|
-
name: '',
|
|
58
|
-
/** 依赖 */
|
|
59
|
-
dependencies: packageJsonData.dependencies || {},
|
|
60
|
-
/** 开发依赖 */
|
|
61
|
-
devDependencies: packageJsonData.devDependencies || {},
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export { data as default };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import data from '../data.mjs';
|
|
2
|
-
import { pathJoin } from 'a-node-tools';
|
|
3
|
-
import { mkdirSync } from 'node:fs';
|
|
4
|
-
import { indexTs } from './indexTs.mjs';
|
|
5
|
-
import { srcIndexTs } from './srcIndexTs.mjs';
|
|
6
|
-
|
|
7
|
-
/****************************************************************************
|
|
8
|
-
* @Author lmssee
|
|
9
|
-
* @Email lmssee@outlook.com
|
|
10
|
-
* @FileName index.ts
|
|
11
|
-
* @Date 周三 08/28/2024
|
|
12
|
-
* @Description 生成 sec 文件夹,并导入其他生成项目文件的模块
|
|
13
|
-
****************************************************************************/
|
|
14
|
-
/**
|
|
15
|
-
* 导出生成 src 的主文件
|
|
16
|
-
*/
|
|
17
|
-
function src() {
|
|
18
|
-
// 创建 src 文件夹
|
|
19
|
-
mkdirSync(pathJoin(data.cwd, 'src'));
|
|
20
|
-
/// index.ts
|
|
21
|
-
indexTs();
|
|
22
|
-
//
|
|
23
|
-
srcIndexTs();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { src };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
|
|
4
|
-
/** 导出生成 index.ts 文件 */
|
|
5
|
-
function indexTs() {
|
|
6
|
-
/// index.ts
|
|
7
|
-
writeFileSync(data.fileName('index.ts'), `import './src/index';
|
|
8
|
-
/** 测试函数
|
|
9
|
-
*
|
|
10
|
-
* 仅做初始化后测试用
|
|
11
|
-
*
|
|
12
|
-
* @returns {@link undefined}
|
|
13
|
-
*/
|
|
14
|
-
export function testFunction() {
|
|
15
|
-
console.log('**********************');
|
|
16
|
-
console.log('测试函数打印内容');
|
|
17
|
-
console.log('**********************');
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
`);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export { indexTs };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
|
|
4
|
-
/** */
|
|
5
|
-
function srcIndexTs() {
|
|
6
|
-
writeFileSync(data.fileName('src/index.ts'), `import { _p } from 'a-node-tools';
|
|
7
|
-
|
|
8
|
-
// print 'hello ${data.name} on the terminal'
|
|
9
|
-
// 向终端输出 "你好 ${data.name}"
|
|
10
|
-
_p('welcome ${data.name}');
|
|
11
|
-
`);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export { srcIndexTs };
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* eslint 配置
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
function eslintConfig() {
|
|
9
|
-
writeFileSync(data.fileName('eslint.config.js'), `import globals from 'globals';
|
|
10
|
-
import pluginJs from '@eslint/js';
|
|
11
|
-
import tseslint from 'typescript-eslint';
|
|
12
|
-
import eslintConfigPrettier from 'eslint-config-prettier';
|
|
13
|
-
|
|
14
|
-
export default [
|
|
15
|
-
{ files: ['**/*.{js,mjs,cjs,ts}'] },
|
|
16
|
-
{ languageOptions: { globals: globals.browser } },
|
|
17
|
-
pluginJs.configs.recommended,
|
|
18
|
-
...tseslint.configs.recommended,
|
|
19
|
-
eslintConfigPrettier,
|
|
20
|
-
];
|
|
21
|
-
`);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export { eslintConfig };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { eslintConfig } from './eslint.mjs';
|
|
2
|
-
import { packageJson } from './package.mjs';
|
|
3
|
-
import { prettier } from './prettier.mjs';
|
|
4
|
-
import { readme } from './readme.mjs';
|
|
5
|
-
import { rollup } from './rollup.mjs';
|
|
6
|
-
import { tsconfigJson } from './tsconfig.mjs';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* 导出 package 的主文件
|
|
11
|
-
*/
|
|
12
|
-
function packageIndex() {
|
|
13
|
-
packageJson();
|
|
14
|
-
tsconfigJson();
|
|
15
|
-
rollup();
|
|
16
|
-
readme();
|
|
17
|
-
eslintConfig();
|
|
18
|
-
prettier();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { packageIndex };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import data from '../data.mjs';
|
|
2
|
-
import { writeToJsonFile } from '../tools.mjs';
|
|
3
|
-
|
|
4
|
-
/****************************************************************************
|
|
5
|
-
* @Author lmssee
|
|
6
|
-
* @Email lmssee@outlook.com
|
|
7
|
-
* @FileName package.ts
|
|
8
|
-
* @Date 周三 08/28/2024
|
|
9
|
-
* @Description 生成 package.json 文件内容
|
|
10
|
-
*
|
|
11
|
-
* 每次调用时都会访问本地的 npm 信息并返回,每一次版本更新都会导致包的更新
|
|
12
|
-
****************************************************************************/
|
|
13
|
-
/**
|
|
14
|
-
* 这里之前返回的是一个对象,导致 js 在预编译的时候直接生成一个静态数据
|
|
15
|
-
* 而无法在调用 packageJson 的时候真正的将 data 的最新值带入
|
|
16
|
-
* 这便是现在以函数的形式进行返回,能够在调用时直接获取 data 的最新值
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
/** 除了 data 中提供的数据以外的数据 */
|
|
20
|
-
const initData = () => ({
|
|
21
|
-
name: '',
|
|
22
|
-
type: 'module',
|
|
23
|
-
version: '0.0.0',
|
|
24
|
-
main: 'cjs/index.cjs',
|
|
25
|
-
typings: 'types/index.d.ts',
|
|
26
|
-
author: '___ <___@___.___> (https://___.___)',
|
|
27
|
-
description: 'here is the project description, please change the content with double underline',
|
|
28
|
-
scripts: {
|
|
29
|
-
b: 'rollup --config rollup.config.js && tsc -p tsconfig.types.json',
|
|
30
|
-
build: 'npx ixxx rm dist run b',
|
|
31
|
-
diff: 'npx ixxx pkg diff',
|
|
32
|
-
eslint: 'npx ixxx cls && eslint src',
|
|
33
|
-
beautify: 'npm run prettier',
|
|
34
|
-
prettier: 'npx ixxx cls && prettier . --write',
|
|
35
|
-
test: 'npx ixxx cls && rollup --config rollup.config.test.js && node test/out/test/index.mjs',
|
|
36
|
-
},
|
|
37
|
-
files: ['mjs', 'cjs', 'types'],
|
|
38
|
-
exports: {
|
|
39
|
-
'.': {
|
|
40
|
-
import: {
|
|
41
|
-
default: './mjs/index.mjs',
|
|
42
|
-
types: './types/index.d.ts',
|
|
43
|
-
},
|
|
44
|
-
require: {
|
|
45
|
-
default: './cjs/index.cjs',
|
|
46
|
-
types: './types/index.d.ts',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
keywords: [data.name],
|
|
51
|
-
license: 'ISC',
|
|
52
|
-
homepage: 'https://___.___',
|
|
53
|
-
bugs: {
|
|
54
|
-
url: `https://github.com/__/${data.name}/issues`,
|
|
55
|
-
email: '__@__.__',
|
|
56
|
-
},
|
|
57
|
-
repository: {
|
|
58
|
-
type: 'git',
|
|
59
|
-
url: `git+https://github.com/___/${data.name}.git')`,
|
|
60
|
-
},
|
|
61
|
-
publishConfig: {
|
|
62
|
-
access: 'public',
|
|
63
|
-
registry: 'https://registry.npmjs.org/',
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
/** 生成 package.json 文件内容 */
|
|
67
|
-
function packageJson() {
|
|
68
|
-
const bin = {};
|
|
69
|
-
bin[``] = 'bin/index.js';
|
|
70
|
-
const finalData = Object.assign(initData(), data.package, { bin });
|
|
71
|
-
writeToJsonFile('package.json', finalData);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export { packageJson };
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
import { writeToJsonFile } from '../tools.mjs';
|
|
4
|
-
|
|
5
|
-
/****************************************************************************
|
|
6
|
-
* @Author lmssee
|
|
7
|
-
* @Email lmssee@outlook.com
|
|
8
|
-
* @FileName prettier.ts
|
|
9
|
-
* @Date 周三 08/28/2024
|
|
10
|
-
* @Description 生成 prettier 规则的文件
|
|
11
|
-
*
|
|
12
|
-
* 包含:
|
|
13
|
-
* - .prettierignore prettier 执行忽略文件
|
|
14
|
-
* - .prettierrc prettier 配置文件
|
|
15
|
-
****************************************************************************/
|
|
16
|
-
/**
|
|
17
|
-
* 导出 prettier 的相关配置文件
|
|
18
|
-
*
|
|
19
|
-
* 生成包含:
|
|
20
|
-
* - .prettierignore prettier 执行忽略文件
|
|
21
|
-
* - .prettierrc prettier 配置文件
|
|
22
|
-
*/
|
|
23
|
-
function prettier() {
|
|
24
|
-
// 写入 prettier ignore 忽略规则
|
|
25
|
-
writeFileSync(data.fileName('.prettierignore'), `node_modules
|
|
26
|
-
|
|
27
|
-
**/node_modules
|
|
28
|
-
|
|
29
|
-
## 打包文件
|
|
30
|
-
|
|
31
|
-
dist
|
|
32
|
-
|
|
33
|
-
test/out
|
|
34
|
-
|
|
35
|
-
.DS_Store`);
|
|
36
|
-
/// 写入规则
|
|
37
|
-
writeToJsonFile('.prettierrc', {
|
|
38
|
-
// 屏幕单行的宽度
|
|
39
|
-
printWidth: 80,
|
|
40
|
-
// tab 宽度,默认是 2 ,但是我觉得不太明显
|
|
41
|
-
tabWidth: 2,
|
|
42
|
-
useTabs: false,
|
|
43
|
-
semi: true,
|
|
44
|
-
// 单引号
|
|
45
|
-
singleQuote: true,
|
|
46
|
-
trailingComma: 'all',
|
|
47
|
-
bracketSpacing: true,
|
|
48
|
-
arrowParens: 'avoid',
|
|
49
|
-
endOfLine: 'auto',
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export { prettier };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
|
|
4
|
-
/** 当前的时间 */
|
|
5
|
-
const now = new Date();
|
|
6
|
-
/** 月份 */
|
|
7
|
-
const month = now.getMonth() + 1;
|
|
8
|
-
/** 日期 */
|
|
9
|
-
const day = now.getDate();
|
|
10
|
-
/** 年份 */
|
|
11
|
-
const year = now.getFullYear();
|
|
12
|
-
/**
|
|
13
|
-
* 导出生成一些琐碎而又必须的文件
|
|
14
|
-
*/
|
|
15
|
-
function readme() {
|
|
16
|
-
/// readme.md
|
|
17
|
-
writeFileSync(data.fileName('README.md'), `# ${data.name}`);
|
|
18
|
-
/// 自述文件.md
|
|
19
|
-
writeFileSync(data.fileName('自述文件.md'), `# ${data.name}`);
|
|
20
|
-
/// changeLog.md
|
|
21
|
-
writeFileSync(data.fileName('CHANGELOG.md'), `# ${data.name}\n\n## 0.0.0 (${month} 月 ${day} ${year} 年)\n\n- 初始化项目`);
|
|
22
|
-
/// LICENSE
|
|
23
|
-
license();
|
|
24
|
-
/// 生成 .gitignore 文件
|
|
25
|
-
writeFileSync(data.fileName('.gitignore'), `node_modules
|
|
26
|
-
|
|
27
|
-
**/node_modules
|
|
28
|
-
|
|
29
|
-
## 打包文件
|
|
30
|
-
|
|
31
|
-
dist
|
|
32
|
-
|
|
33
|
-
test/out
|
|
34
|
-
|
|
35
|
-
.DS_Store`);
|
|
36
|
-
}
|
|
37
|
-
/** 导出生成 license 文件 */
|
|
38
|
-
function license() {
|
|
39
|
-
writeFileSync(data.fileName('LICENSE'), `Copyright (c) <${year}> <${data.name}>
|
|
40
|
-
|
|
41
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
42
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
43
|
-
copyright notice and this permission notice appear in all copies.
|
|
44
|
-
|
|
45
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
46
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
47
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
48
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
49
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
50
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
51
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export { license, readme };
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import data from '../data.mjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 生成 rollup 打包工具的配置文件信息
|
|
6
|
-
*/
|
|
7
|
-
function rollup() {
|
|
8
|
-
rollupJs();
|
|
9
|
-
rollupConfigTestJs();
|
|
10
|
-
}
|
|
11
|
-
/** 导出生成 rollup.config.js 文件 */
|
|
12
|
-
function rollupJs() {
|
|
13
|
-
writeFileSync(data.fileName('rollup.config.js'), `import typescript from '@rollup/plugin-typescript';
|
|
14
|
-
import resolve from '@rollup/plugin-node-resolve';
|
|
15
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
16
|
-
import json from '@rollup/plugin-json';
|
|
17
|
-
// import terser from '@rollup/plugin-terser';
|
|
18
|
-
import cleanup from 'rollup-plugin-cleanup';
|
|
19
|
-
import copy from 'rollup-plugin-copy';
|
|
20
|
-
|
|
21
|
-
export default {
|
|
22
|
-
input: './index.ts',
|
|
23
|
-
output: [
|
|
24
|
-
{
|
|
25
|
-
format: 'es',
|
|
26
|
-
entryFileNames: '[name].mjs',
|
|
27
|
-
preserveModules: true,
|
|
28
|
-
sourcemap: false,
|
|
29
|
-
exports: 'named',
|
|
30
|
-
dir: 'dist/mjs',
|
|
31
|
-
},
|
|
32
|
-
// 若是生成 \`bin\` 类型,或是生成的文件不包含 commonJs,下面导出 commonJs 的配置可是删除
|
|
33
|
-
{
|
|
34
|
-
format: 'cjs',
|
|
35
|
-
entryFileNames: '[name].cjs',
|
|
36
|
-
preserveModules: true,
|
|
37
|
-
sourcemap: false,
|
|
38
|
-
exports: 'named',
|
|
39
|
-
dir: 'dist/cjs',
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
// 配置需要排除的包
|
|
43
|
-
external: id =>
|
|
44
|
-
/^(node:)|^(tslib)|^(a-js-tools)|^(a-node-tools)|^(a-command)/.test(id),
|
|
45
|
-
plugins: [
|
|
46
|
-
resolve(),
|
|
47
|
-
commonjs(),
|
|
48
|
-
// 可打包 json 内容
|
|
49
|
-
json(),
|
|
50
|
-
typescript({
|
|
51
|
-
// compilerOptions: {},
|
|
52
|
-
// exclude: ["./node_modules", "./test"],
|
|
53
|
-
}),
|
|
54
|
-
// 打包压缩,自动去注释
|
|
55
|
-
// terser(),
|
|
56
|
-
// 去除无用代码
|
|
57
|
-
cleanup(),
|
|
58
|
-
copy({
|
|
59
|
-
targets: [
|
|
60
|
-
{ src: 'package.json', dest: 'dist' },
|
|
61
|
-
{ src: 'README.md', dest: 'dist' },
|
|
62
|
-
{ src: 'LICENSE', dest: 'dist' },
|
|
63
|
-
// 若是生成 bin 类型的包,可以将下面的代码打开
|
|
64
|
-
// { src: 'bin', dest: 'dist' },
|
|
65
|
-
],
|
|
66
|
-
}),
|
|
67
|
-
],
|
|
68
|
-
};`);
|
|
69
|
-
}
|
|
70
|
-
/** 导出配置 rollup.config.test.js 文件 */
|
|
71
|
-
function rollupConfigTestJs() {
|
|
72
|
-
writeFileSync(data.fileName('rollup.config.test.js'), `import typescript from '@rollup/plugin-typescript';
|
|
73
|
-
import resolve from '@rollup/plugin-node-resolve';
|
|
74
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
75
|
-
import json from '@rollup/plugin-json';
|
|
76
|
-
import cleanup from 'rollup-plugin-cleanup';
|
|
77
|
-
|
|
78
|
-
/** 配置需要不打包进生产包的包名配置 */
|
|
79
|
-
const externalList = [
|
|
80
|
-
'nodejs',
|
|
81
|
-
'tslib',
|
|
82
|
-
'a-js-tools',
|
|
83
|
-
'a-node-tools',
|
|
84
|
-
'a-command',
|
|
85
|
-
];
|
|
86
|
-
|
|
87
|
-
export default {
|
|
88
|
-
input: 'test/index.ts',
|
|
89
|
-
output: [
|
|
90
|
-
{
|
|
91
|
-
format: 'es',
|
|
92
|
-
entryFileNames: '[name].mjs',
|
|
93
|
-
preserveModules: true,
|
|
94
|
-
sourcemap: false,
|
|
95
|
-
exports: 'named',
|
|
96
|
-
dir: 'test/out',
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
// 配置需要排除的包
|
|
100
|
-
external: id => externalList.some(i => id.startsWith(i)),
|
|
101
|
-
plugins: [
|
|
102
|
-
resolve(),
|
|
103
|
-
commonjs(),
|
|
104
|
-
// 打包压缩,自动去注释
|
|
105
|
-
// terser(),
|
|
106
|
-
// 可打包 json 内容
|
|
107
|
-
json(),
|
|
108
|
-
typescript({}),
|
|
109
|
-
// 去除无用代码
|
|
110
|
-
cleanup(),
|
|
111
|
-
],
|
|
112
|
-
};
|
|
113
|
-
`);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export { rollup, rollupConfigTestJs, rollupJs };
|