commit b9bbde3d3245d69aa7fb499b5d8eaeb38e0ce5c3 Author: funjia <13429193897@163.com> Date: Fri Jan 24 00:58:03 2025 +0800 feat: first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..19fa28b --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +创建模块命令 +```bash +create-funjia-admin -n test-project +``` + +使用 npm ls 命令 +除了直接查看链接目录,你还可以使用 npm ls 命令来查看全局链接的包。 +查看全局链接的包 +在终端中执行以下命令: +```bash +npm ls -g --depth=0 +``` +-g 选项表示查看全局安装的包。 +--depth=0 选项表示只显示顶层的包,不显示子依赖。 +执行该命令后,输出结果会列出全局安装的所有包,其中被 npm link 链接的包会显示为链接状态 + +取消本地项目的全局链接 +如果你在本地开发的项目里使用 npm link 将其链接到全局,之后想取消这个链接,可按如下步骤操作: +步骤 +进入本地项目目录:打开终端,使用 cd 命令进入本地项目的根目录。 +执行取消链接命令:在项目根目录下执行 npm unlink 命令。 + + +从豆包获取的资料 +https://www.doubao.com/thread/wf85c2b7e99a830a1 + +![](./docs/参考资料.png) diff --git a/bin/create-funjia-admin.js b/bin/create-funjia-admin.js new file mode 100644 index 0000000..9d3c678 --- /dev/null +++ b/bin/create-funjia-admin.js @@ -0,0 +1,40 @@ +#!/usr/bin/env node +const { program } = require('commander'); +const fs = require('fs-extra'); +const path = require('path'); +const simpleGit = require('simple-git'); + +// 定义命令和选项 +program + .option('-n, --name ', 'Specify the project name') + .action(async (options) => { + const projectName = options.name; + if (!projectName) { + console.error('Please provide a project name using -n or --name.'); + return; + } + + const targetDir = path.join(process.cwd(), projectName); + const gitRepoUrl = 'http://git.funjia.top/funjia/funjia-admin-template-vue.git'; // 替换为你的 Git 仓库地址 + + try { + // 创建目标目录 + fs.ensureDirSync(targetDir); + + // 克隆 Git 仓库到目标目录 + const git = simpleGit(); + await git.clone(gitRepoUrl, targetDir); + + // 删除 .git 文件夹 + const gitDir = path.join(targetDir, '.git'); + if (fs.existsSync(gitDir)) { + fs.removeSync(gitDir); + } + + console.log(`Project ${projectName} has been created successfully!`); + } catch (error) { + console.error(`Error creating project: ${error.message}`); + } + }); + +program.parse(process.argv); \ No newline at end of file diff --git a/docs/参考资料.png b/docs/参考资料.png new file mode 100644 index 0000000..d54f2e7 Binary files /dev/null and b/docs/参考资料.png differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fe9e63c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,124 @@ +{ + "name": "create-funjia-admin", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "create-funjia-admin", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "commander": "^13.1.0", + "fs-extra": "^11.3.0", + "simple-git": "^3.27.0" + }, + "bin": { + "create-my-project": "bin/create-funjia-admin.js" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/simple-git": { + "version": "3.27.0", + "resolved": "https://registry.npmmirror.com/simple-git/-/simple-git-3.27.0.tgz", + "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==", + "license": "MIT", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5c4f94b --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "create-funjia-admin", + "version": "1.0.0", + "main": "index.js", + "bin": { + "create-funjia-admin": "bin/create-funjia-admin.js" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "commander": "^13.1.0", + "fs-extra": "^11.3.0", + "simple-git": "^3.27.0" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..01b42fa --- /dev/null +++ b/yarn.lock @@ -0,0 +1,69 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + +"@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.npmmirror.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + +commander@^13.1.0: + version "13.1.0" + resolved "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz" + integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== + +debug@^4.1.1, debug@^4.3.5: + version "4.4.0" + resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +fs-extra@^11.3.0: + version "11.3.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.0.tgz" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +simple-git@^3.27.0: + version "3.27.0" + resolved "https://registry.npmmirror.com/simple-git/-/simple-git-3.27.0.tgz" + integrity sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.3.5" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==