{"_id":"@agds/node-utils","_rev":"7-7879629537aab59bd24661c5825117f1","name":"@agds/node-utils","dist-tags":{"latest":"1.0.18"},"versions":{"1.0.0":{"name":"@agds/node-utils","version":"1.0.0","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","prebuild":"npm run test","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^7.2.0","fs-extra":"^9.1.0","json5":"^2.2.0","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.0","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"gitHead":"2b9eb4d22f0d3d84f4c92743cbe6a5ac6fb698d4","_id":"@agds/node-utils@1.0.0","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-bA6VqJHNBsyHD/8PsopPoL5ynOpzKFS3XdrdSHMOl5gZDvz2R/cqcOv0oVL7Q2Tx8IDf/Npe9hbq32kSNsJ3dw==","shasum":"8a4156e4947cf93a2b711b596f4860753e6d9493","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.0.tgz","fileCount":36,"unpackedSize":84581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyK1WCRA9TVsSAnZWagAAabYP/3lH1/08PFV8scvaL3WE\nM7T8qMMfHixjILJnOl7l6NLey6QkP5/PbA0BzP38CMsbxcTs3on3ON4qTFme\nzecugWDX55nnhXeHgmd9SjP9hlLKf00ayy7AGmKnU2dT5rHDCx9hGYMyg4fJ\nUFzwI5ZQee7yhmCf343c2lVqd5yt3t39rPpX64gZzmXEFSGjZaI5hb6sCe0M\ncOHRM8ckWbojpIaykPQ9QdqAeYsxecr2dP7i1Rnud3muzZsEIHfCI+wv2xQJ\nftrjOnbGje/PQRzXCeXaEbPaTBS8KE6/cGkrMCaWTJrmC9USEvKnuI2EZ6ww\nTqujffOnQgqtflIY+AfTGqGeQz3oyb1NxtIwgihb+VEOk+Rv+r9PxJYITQ8C\nAfbmM9c14PUqr5WGtTpAdvhtW3zUUX9oJcJiVuZTFi6ydkMgeuvHGCdF7CGn\n1d04hjYAgIxpQ8OsSgGgHJjyfID9bFeeMQ0WvrPwxg3EOAzMbdlh57KrKoa3\nt93EXSfeU6n0ahJDC802kFqei0TBfn4LCpppKeQPi8Z7z40gdX8WTgfYAWsz\nRT/+F6V1EA3Ldq0vG0IwnaBDlsVJ3Xg8AKQGrETS1MwN/yPBX0DJ7vfDm8p+\nsl8PN/eeAF9EEXftjanlYYpPLBS/dnhtc/g31NG5F4DaYCtku8QppBr9TXGe\nYh2+\r\n=9j+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6PQ++4hLMLdi4tHde1XmRJdBc5LGKigd2BGDIkIEiFAiEAxWNvKqSICVxUntqxS2CQSrOR4SAfbH5yIjZoCurQJxc="}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.0_1623764310801_0.1803329151988109"},"_hasShrinkwrap":false},"1.0.1":{"name":"@agds/node-utils","version":"1.0.1","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","prebuild":"npm run test","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^7.2.0","fs-extra":"^9.1.0","json5":"^2.2.0","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.0","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"gitHead":"2b9eb4d22f0d3d84f4c92743cbe6a5ac6fb698d4","_id":"@agds/node-utils@1.0.1","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-nvtm30SC+ywwuoOA0zZ0Kpjsw7qI7kuvmV2xngMRkOHZzWTbcFwptdYlAtbAUWd6jGQQ6J46i8MNFPvEZD7VgA==","shasum":"82c79f636cb558f54c3ac434817a3847afcdab9b","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.1.tgz","fileCount":36,"unpackedSize":84596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyLQZCRA9TVsSAnZWagAApTAP/2RiZU8EDd4I+gkSkQOF\nRaaWQ1Vq5AImtSr/S+rwuxq8jDFXnnAfTPuK+NBuPAXrtQzg2Is5wQj8Mizc\nuUkKESXPqhFy7+TpPu1y/l8Q53XylHENpu/IL1Nkn+wvERgrvMClcKQz3aew\n4GUx1PJ8oeFvshZ63nMqQHVkU1oKBnxBF7aboUOQL3H9hrSS/xg2zxB9Vbi1\nw5iPcplFrC/zpOUQK+9AVRdy4Vp6T6Br2asj2sUvKzG8T/a0MGlciL+qNuSf\n5FdiRB7wovP0arQpde+jh4JgG0caXuyEJJkFFcj7kV04ea4zIs/ECL/Q76ci\nWVlGDaeslFz+3b5tehAv7BOLYpWf+nD/r4YxhFaULzl2zWV42Ev/tB1cXZTs\nUEwRdGjm2XRUKhkXTy6tiEh8u5B/F2CRHHIMj+dQjGq92Crg/uqdEgSNlSwJ\nzyi0mL+u4NzNma5UArY+/2WIiw2Z4kjp0Ml03KKJskDR9PciMCGt6rxshcwI\n1OYO2IhjgAUazVu24v5kBg+fF287b130Y4BdtSLkJ7AnsnJksOSjOm5kNeOE\ndVvx0NPic8twDgdqTkKKghDeBBhl3xXAxfQftGD1gkygUQm1uH02rzUS+p72\n9K3briZsPLI3xbcB8luqbPecicViFmPkq761lcwj09PmORLKml+nmgrM+/Hm\nx/UZ\r\n=TQR3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC07lm6TBiOYogMdpY4jQdcVZhWpu3oMMqaARP43/G4CAiAlmFp5/cASAn5d8TfBBEAFcxuWP7a68ImR/G5tZV8XpA=="}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.1_1623766041285_0.5274997849991738"},"_hasShrinkwrap":false},"1.0.14":{"name":"@agds/node-utils","version":"1.0.14","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","docs:postbuild":"npm run docs && (git add . && git commit -m \"docs(readme): 更新文档\" || true)","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","prepublishOnly":"npm run test && npm run build && npm run docs:postbuild","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^7.2.0","fs-extra":"^9.1.0","json5":"^2.2.0","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.1","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"gitHead":"eb45554d7828d494acd479a263b7d63d24ca3278","_id":"@agds/node-utils@1.0.14","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-l68fA7CBWgwjCPocsTRxBYDNJGFuN572gS8Kos6v64NNmA61ksLFqcjz3xRptKARgODJloZNDNRGikjVQTDG9w==","shasum":"673f6a3d6ed88c244eb070c4f8d878b7dee2a4c1","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.14.tgz","fileCount":36,"unpackedSize":84894,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyhSjCRA9TVsSAnZWagAAd8kP/3sAuVu6wq70zvsreVVy\njgVVBwYgMyo0uJZ3PhJXq3izb5FjDO7L6HzsWCIntHoIJaN9w3QAuLmVKDSs\nfHSa2LfaPrZjSMw+21oAFKD5hvoAGu41uJnwhQGlIixEGBYelOeImZR6iN6o\nQWu1Xs9ZAN5mQgXFnaYEnOmVHDDAWHdv9sEihN90O0X48bijrbbjG+iSftDc\nqO2HzZQTHcbPr+XW0q9HolGZx9r9VuKV0krDNB0Am2WE+qWf86Rk02znCByl\n4z8+tC/IZYf75buVJAATuTp5vR1wqT2ufmxXpOY9ITXndu9RVReMdG9zwRJJ\njAnTXzh8HUsmUvwRf7XQ2xvNYQPtHFCEGZCW3rt2qUCmwiozX5CZksUT4Yir\nXNbeDt3U9fJJwwEZ8rpX1249/xmmtGl/jrEX1uHrSiCBU8kIaZytHYvmp6xa\nO7NCbUcCPaJq7aqS6BaZ8Xnw64PnNzuBEPj4kIz3x8ZzDAO157DyK0VPfG+D\nKsVNSBjG+4UVT2drdj9mlexPRToCYobEv70x6RK5rprK6lmoyAhVXeWkQCPZ\nMmliryUglfOT+bKGRlM5aKpGUpcygHGqw3rNr5h0Tk6f4PrpB7Nv9XO+py3A\n76EFPvYiixShkFJFYw+IARiK4YnfojRSOsyeCDkzgq7z5aqbK1qSa/EPppbe\nezNm\r\n=ca0s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn3ikcmBwHEmGOefKfg1qXJP2IE1gWgKoCv8Ws3+lY6AIhAKbszXAVKvyYJOP216tatzJ+7SLkThmLkN2aqEWfDLcy"}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.14_1623856291189_0.4247287844524923"},"_hasShrinkwrap":false},"1.0.15":{"name":"@agds/node-utils","version":"1.0.15","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","docs:postbuild":"npm run docs && (git add . && git commit -m \"docs(readme): 更新文档\" || true)","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","prepublishOnly":"npm run test && npm run build && npm run docs:postbuild","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^7.2.0","fs-extra":"^9.1.0","json5":"^2.2.0","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/agds-doc-preset":"^1.0.6","@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.10","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"gitHead":"214289d88ffebcbac31e8966dc2d4bd41c866f40","_id":"@agds/node-utils@1.0.15","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-7GZvUsk46tV3g8EOudEHVtS6Rjb6Y9Pmr/048SmMN6Ztm4576pIxUTZohiUiBVB8tHyrcqHYTmGCKkGN6ktSWg==","shasum":"8e578b64451f04526c76fa32d6c45ada2f2b7943","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.15.tgz","fileCount":37,"unpackedSize":87160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5dCQCRA9TVsSAnZWagAAPPsP/AjYuct4zz4T9++hAO/k\nG7FC3Kxa/SwWHltekWv14zn0iiysuR1kiydMRGMS36rQNp2LHjqDnoKj3bkz\nkGhjzY0nGK6FexajBrLvvUyxaMiess9psxNSE8OcWlARG7LBQWS/68rI8KHY\nyl8zKGA3iaUSnLgvt16e1ZEp3EEOYMnf/+x+IMuSe5YbzjTNiKsMVHyitTuX\nSVAFfdFIJjmJgwm0z8/PXpzL9ZaNcskFm6+l3gPfnkk9hcFM7BB16LApwYK1\n2FozVLvK8yPIogdBDk7bk3owtdlgn4EkejiUhMuwehGDe/F6Uiw9qALmn05U\nYqkhNidIeoeR1mDBQhxVbgbhPKuxbkpTwn0XnTQD48+aeZL/Sqxl6cJZx2Jq\ntOyRG7dToyv2tPsyGT8dSgag0OnQlD1QJWFIYQXyIghjKK0V0HHYA2mW8OdN\nFEzzEvt/PyGOwBERo6buIm6Zr7mYm+ePp6Wf+q9bsBBYdylKXhKtI3jkqskM\ndFvTCnaMrvPXK0U3IWFDwnAvzfisaas7h9I46ANCp5+jTcX+BUlDlxI9ChZW\nyvE63llM1mXjBBbcHlh0U1rDi6g+jrWlf4OWJ0S7q/A5dsKSfn5oF522Z1HH\nCzd78YwSfZhJfAUNZoRDMRFS/rUDYngoY9VlGQgBc+SL72cKyXR+0dgGmbPM\nHwMn\r\n=1bxf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8HisUDst7DHpDWYKBAk5qm06Vqj65KrikHR7zXpHoogIgXu22Frfbw60GPB2LkRtaBxv+qXpsuGwzaqr2uE8877c="}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.15_1625673872177_0.8648972243018023"},"_hasShrinkwrap":false},"1.0.16":{"name":"@agds/node-utils","version":"1.0.16","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","docs:postbuild":"npm run docs && (git add . && git commit -m \"docs(readme): 更新文档\" || true)","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","prepublishOnly":"npm run test && npm run build && npm run docs:postbuild","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^7.2.0","compressing":"^1.5.1","fs-extra":"^9.1.0","json5":"^2.2.0","node-fetch":"^2.6.1","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/agds-doc-preset":"^1.0.6","@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.10","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"publishConfig":{"access":"public"},"gitHead":"a02dd3d8539f61c4ee7afddcefe02097ef607876","_id":"@agds/node-utils@1.0.16","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-R+LgK8zhBR37btGVsuZJPJuarQzGvSLVJHLlMnEZzRSCBOZ0uGdIdVh671v1rso9LRUar8T8wPj6zxKlQ3j8JA==","shasum":"b815ad7aea1f183735538037a251b3efd523c544","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.16.tgz","fileCount":43,"unpackedSize":113757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+C4/CRA9TVsSAnZWagAA7jkP/RJ6NSKQiCwqOaQdN/ZD\nTObtqh1KfkXaDwrPuLbjyky3FiGAV8IarqpZP9xvg4qV6COQUMJVll6h8cDp\nnLeskV+gw2D6/2EJs72AuwKKv0ydZDAtGRlJnRDaRcV5OjKA43DWCUeA8Jso\nwpw4U7weQ8DKwO1igjV798O/PAYk8bghygyKo8DbRE1gLPRwwLQcI1bmGtrG\nY477iqdaIb9gInYom+dzP74Xl5m9LPcM9w2ZjbAETQO8T4bMGCYJADQ0hy7q\nGDxEQ8KATrSOQxIonpP9RPJH+A+xWIhwhm6QXOsIfiNkm9tnHHmloetSkP9i\n7YKdAxq+ctMrrspUR2sdh558zEUh3Dkgn7JUpZJvohTXyJkV70fr3ghBuxdA\nfXrWWST/Uimb40VvUniP8wc0GoJ4cs6qD220oUgIMHh/HEodgU5IbQfAuE8Y\nfdthPfO93ac5DdKf4XrVtGnUWQ2Vb/CqxJ3S9JoxlYrma3bTCA9PO5/RzRzQ\n2+pKOetKn1D3+qStOcdgNhraOoYZPD3LaLY24TUZRTxrUUZlVSCbq2nrjNog\nIBctKjYfN6n6edpiZ6w1IV8gP+OMaW7Lnc5hM6CNdieraSMKsgInfKNDXJmz\nh1sMt/H6vhl6yLkBMY4/AmvWpVvNHFbIKjrVlQU93chUsxwQ73SxbsAWu1Y5\npous\r\n=CFet\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbp5IP2xWAtmpXrYc6NYdsnkHJ7+ct5nfjnNpf5AwEewIhAL0Jed0yv4b7rqS7WSeizTu2pETQUxW0bPuWbCqAFg2k"}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.16_1626877503155_0.2125751518540584"},"_hasShrinkwrap":false},"1.0.17":{"name":"@agds/node-utils","version":"1.0.17","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","docs:postbuild":"npm run docs && (git add . && git commit -m \"docs(readme): 更新文档\" || true)","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","prepublishOnly":"npm run test && npm run build && npm run docs:postbuild","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^8.3.0","compressing":"^1.5.1","fs-extra":"^9.1.0","json5":"^2.2.0","node-fetch":"^2.6.1","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/agds-doc-preset":"^1.0.6","@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.10","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"publishConfig":{"access":"public"},"gitHead":"65dfb6268d032679d1b44147d86be94cf7cf8857","_id":"@agds/node-utils@1.0.17","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-6P5kHklsZ7WYNPAAhJjnJGg/69gnF/Xnb21uku5LPImhGaC/ZCERRiCpTciLk36RtsX3JlZjkZK4/AzX4soKbw==","shasum":"34eeb6634b321e660b9ccee484759901164820cf","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.17.tgz","fileCount":43,"unpackedSize":116981,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC25AbUs1WagBKf3V4dTSd5DpshCF30liKgGT8BpikvhgIhAMuphuRExqkGaaSKv5SYvNfQPX0IFlhrclsoxHqftuo1"}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.17_1636556623722_0.7589072730532616"},"_hasShrinkwrap":false},"1.0.18":{"name":"@agds/node-utils","version":"1.0.18","description":"agds系统内部node工具函数库","main":"lib","types":"lib/types","bin":{"agds-gc-has-msg":"lib/bin/gcHasMsg.js"},"scripts":{"build":"gulp","docs:postbuild":"npm run docs && (git add . && git commit -m \"docs(readme): 更新文档\" || true)","lint":"eslint --ext .js,.vue,.json,.md src","lint:fix":"eslint --ext .js,.vue,.json,.md src --fix","docs":"agds-doc","test":"jest","prepublishOnly":"npm run test && npm run build && npm run docs:postbuild","commit":"git add . && git commit --no-edit","postversion":"npm run changelog","changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","postchangelog":"git add . && git commit -m \"docs(changelog): 更新CHANGELOG\" || true"},"agds":{"config":"lib/agds.cli.config.js"},"gitHooks":{"pre-commit":"lint-staged","commit-msg":"commitlint -e $GIT_PARAMS","prepare-commit-msg":"node lib/bin/gcHasMsg.js && exec < /dev/tty && git cz --hook || true"},"lint-staged":{"**/*.{js,json,md}":["eslint  --fix"]},"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"license":"MIT","author":{"name":"junyang"},"dependencies":{"commander":"^8.3.0","compressing":"^1.5.1","fs-extra":"^9.1.0","json5":"^2.2.0","node-fetch":"^2.6.1","user-home":"^3.0.0","webpack-merge":"^5.7.3"},"devDependencies":{"@agds/agds-doc-preset":"^1.0.6","@agds/babel-preset-base":"^1.0.0","@agds/cli-plugin-doc":"^1.0.10","@agds/eslint-config-js":"^1.0.0","@agds/gulp-config-preset":"^1.0.0","@agds/jest-config-node":"^1.0.0","@agds/ts-config-js":"^1.0.0","@commitlint/cli":"^12.1.1","@commitlint/config-conventional":"^12.1.1","@types/fs-extra":"^9.0.11","@types/node":"^14.14.37","commitizen":"^4.2.3","conventional-changelog":"^3.1.24","conventional-changelog-cli":"^2.1.1","cz-conventional-changelog-zh":"^0.0.2","lint-staged":"^10.5.4","yorkie":"^2.0.0"},"publishConfig":{"access":"public"},"gitHead":"7936add18104788f2f52bc9bc20d1c87a7208c74","_id":"@agds/node-utils@1.0.18","_nodeVersion":"12.16.2","_npmVersion":"7.11.1","dist":{"integrity":"sha512-pn2qAvug++C4K4nzC5W9RmuQ7qoCKJB6MnO7II7zyKl3CI+gEF9RkNRPNUZDRjLRdqkB33VnFWipFxwgM8aF6w==","shasum":"ecc9d301c35a647bbe4e95fe4c178d64c08aa7be","tarball":"https://registry.npmjs.org/@agds/node-utils/-/node-utils-1.0.18.tgz","fileCount":43,"unpackedSize":118686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsN14CRA9TVsSAnZWagAAm6QP/i09zP8HZ4YZFJzDorVy\nyxPWsFtaILnl1ZUg8YfdllWE9ynUVALXbEyl3vgoU0VeiZSvs272kwUY6BCJ\nRZ+dIq0jEjV/dQtN62gr5eZCVhUlK+5wIxW1Lo+NoZ0VrhjyuuSND1tdGqoE\n1lG6pPZeXY0D5LrxluS9Db7cwDrv+5qyg/NlXJsXl40Jl0O6zZh/MEY/pYGi\nlyNBaJi9N235+VUKhfb57v3ugauW5y5v+03/FgLCBBDXG5MPbObPjnW1rSZU\nR/PzszqDwJcCCVTz9ZyAbRjuSm2MZQ2pacIFQ+6yQik/rQxjw8Lb3X1TS+br\nHDX600Ys+nTD2ZyI3ezAXA6R1EX7OpJcVzehLGL+0yTBNWwA0eAKi3fB05nA\nplcXtSSG9WWf2ne6FIR7lZHk1iyp+eWCuIFvRJotiZITsbn6k1yClStafG8r\nBcVncpqLHImLwHBkzg4b9exSpKg1yptbaWu7jKoTqpBRTYiPr8TfzwfcCCEx\nl+5ssDbnSgxG0G/hXkMUFrgJt2jBUWLbe0F0AMPW16M7f97TM4kHDHpKaXzP\nISejlKN8cjiX0BbG6sWDYPMXdLbtA/MZeo6CGnbdkNIJE0j4e+XNJr8xa1ze\nwupq1iCtXjk8GXPeyd2lIjCLY2qkzsrhmag9mC+UkKJNj4KA35n01U0Fx7A+\nCx5m\r\n=jvaK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbIPqF43RPVoC/sFuuTKuHzBEPs0kJOcfR9w7npYN6RAiBMeBdz68fgquku0PtrHBGz5t+yyBZw+0JB6VsRd+Qi2Q=="}]},"_npmUser":{"name":"chujunyang","email":"961284688@qq.com"},"directories":{},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-utils_1.0.18_1638980984258_0.9760050746679259"},"_hasShrinkwrap":false}},"time":{"created":"2021-06-15T13:38:30.442Z","1.0.0":"2021-06-15T13:38:30.972Z","modified":"2022-04-04T11:54:43.287Z","1.0.1":"2021-06-15T14:07:21.414Z","1.0.14":"2021-06-16T15:11:31.362Z","1.0.15":"2021-07-07T16:04:32.352Z","1.0.16":"2021-07-21T14:25:03.336Z","1.0.17":"2021-11-10T15:03:43.867Z","1.0.18":"2021-12-08T16:29:44.441Z"},"maintainers":[{"name":"chujunyang","email":"961284688@qq.com"}],"description":"agds系统内部node工具函数库","keywords":["agds","agile-development-system","node","utils","node-utils","log","fs"],"repository":{"type":"git","url":"git@gitee.com:agile-development-system/node-utils.git"},"author":{"name":"junyang"},"license":"MIT","readme":"<p align=\"center\">\n    <img src=\"https://gitee.com/agile-development-system/agds-doc-preset/raw/master/lib/docs/logos/light/1.png\" alt=\"logo\">\n</p>\n\n# @agds/node-utils\n\n**版本** ：1.0.18\n\nagds系统内部node工具函数库\n\n## 快速开始\n\n### 安装\n\n```bash\nnpm i @agds/node-utils\n```\n\n### 引入\n\n```js\nconst utils = require('@agds/node-utils');\nconst { ConvName, FastPath, FastFs, Notice, PresetUtils, GitUtils, NpmUtils, CmdUtils } = utils;\n```\n\n### 导出\n\n```js\nmodule.exports = { ConvName, FastPath, FastFs, Notice, PresetUtils, GitUtils };\n```\n\n## 代码演示\n\n```js\nconst { expect, test, describe } = require('@jest/globals');\nconst { ConvName, FastFs, FastPath, Notice, PresetUtils, CmdUtils, GitUtils, NpmUtils } = require('@agds/node-utils');\nconst path = require('path');\nconst fs = require('fs-extra');\ndescribe('ConvName', () => {\n    test('ConvName.initName', () => {\n        const convName = ConvName.initName('ConvName-test');\n        expect(convName).toMatchObject({\n            lineName: 'conv-name-test',\n            humpName: 'ConvNameTest',\n            lowerHumpName: 'convNameTest',\n        });\n    });\n    test('class ConvName', () => {\n        const convName = new ConvName('ConvName-test');\n        expect(convName).toMatchObject({\n            lineName: 'conv-name-test',\n            humpName: 'ConvNameTest',\n            lowerHumpName: 'convNameTest',\n        });\n    });\n    test('ConvName.toLine', () => {\n        const name = ConvName.toLine('ConvName-test');\n        expect(name).toBe('conv-name-test');\n    });\n    test('ConvName.toLowerHump', () => {\n        const name = ConvName.toLowerHump('ConvName-test');\n        expect(name).toBe('convNameTest');\n    });\n    test('ConvName.toUpperHump', () => {\n        const name = ConvName.toUpperHump('ConvName-test');\n        expect(name).toBe('ConvNameTest');\n    });\n});\n\nconst testText = 'Test';\ndescribe('FastFs', () => {\n    test('FastFs.writeFile', async () => {\n        const pathName = path.join(__dirname, '.temp/FastFs.writeFile.test');\n        await FastFs.writeFile(pathName, testText);\n        expect(fs.readFileSync(pathName, { encoding: 'utf-8' })).toBe(testText);\n    });\n    test('FastFs.writeFileSync', () => {\n        const pathName = path.join(__dirname, '.temp/FastFs.writeFileSync.test');\n        FastFs.writeFileSync(pathName, testText);\n        expect(fs.readFileSync(pathName, { encoding: 'utf-8' })).toBe(testText);\n    });\n    const statPathName = path.join(__dirname, '../__mock__/index.js');\n    const statFalsePathName = path.join(__dirname, '../__mock__/index.jst');\n\n    test('FastFs.getPathStat', async () => {\n        const res = await FastFs.getPathStat(statPathName);\n        expect(res).toBe(true);\n    });\n    test('FastFs.getPathStat false', async () => {\n        const res = await FastFs.getPathStat(statFalsePathName);\n        expect(res).toBe(false);\n    });\n    test('FastFs.getPathStatSync', () => {\n        const res = FastFs.getPathStatSync(statPathName);\n        expect(res).toBe(true);\n    });\n    test('FastFs.getPathStatSync false', () => {\n        const res = FastFs.getPathStatSync(statFalsePathName);\n        expect(res).toBe(false);\n    });\n    const obj = {\n        a: 'a',\n        b: 1,\n    };\n    test('FastFs.writeJsonFormat&FastFs.readJson', async () => {\n        const pathName = path.join(__dirname, '.temp/FastFs.writeJsonFormat.json');\n        await FastFs.writeJsonFormat(pathName, obj);\n        expect(await FastFs.readJson(pathName)).toMatchObject(obj);\n    });\n    test('FastFs.writeJsonFormatSync&FastFs.readJsonSync', () => {\n        const pathName = path.join(__dirname, '.temp/FastFs.writeJsonFormatSync.json');\n        FastFs.writeJsonFormatSync(pathName, obj);\n        expect(FastFs.readJsonSync(pathName)).toMatchObject(obj);\n    });\n    const json = require('../__mock__/json.json');\n    const jsonPathName = path.join(__dirname, '../__mock__/json.json');\n    test('FastFs.readJson', async () => {\n        const res = await FastFs.readJson(jsonPathName);\n        expect(res).toMatchObject(json);\n    });\n    test('FastFs.readJsonSync', () => {\n        const res = FastFs.readJsonSync(jsonPathName);\n        expect(res).toMatchObject(json);\n    });\n    test('FastFs parseJson error', () => {\n        const jsonPathName = path.join(__dirname, '../__mock__/index.js');\n        try {\n            FastFs.readJsonSync(jsonPathName);\n        } catch (error) {\n            expect(error.message).toMatch(jsonPathName);\n        }\n    });\n    test('FastFs.sortDependencies', () => {\n        FastFs.sortDependencies(path.join(__dirname, '../__mock__/test-package.json'));\n        expect(true).toBe(true);\n    });\n});\n\ndescribe('FastPath', () => {\n    test('FastPath.getCwdPath', () => {\n        const res = FastPath.getCwdPath('package.json');\n        expect(typeof res === 'string').toBe(true);\n    });\n    test('FastPath.getHomePath', () => {\n        const res = FastPath.getHomePath('cache');\n        expect(typeof res === 'string').toBe(true);\n    });\n    test('FastPath.getagdsHomePath', () => {\n        const res = FastPath.getAgdsHomePath('cache');\n        expect(typeof res === 'string').toBe(true);\n    });\n    test('FastPath.convPath', () => {\n        const res = FastPath.convPath(__dirname, 'cache');\n        expect(typeof res === 'string').toBe(true);\n    });\n    test('FastPath.convPath root', () => {\n        const res = FastPath.convPath(__dirname, '/cache');\n        expect(typeof res === 'string').toBe(true);\n    });\n});\ndescribe('Notice', () => {\n    const onConsoleOut = (logMethod, cb, out) => new Promise(resolve => {\n        const log = console[logMethod];\n        console[logMethod] = function () {\n            // log.apply(console, arguments);\n            cb.apply(null, arguments);\n            resolve();\n            console[logMethod] = log;\n        };\n        out();\n    });\n    test('Notice.success', () => {\n        return onConsoleOut('log', (res) => {\n            expect(JSON.stringify(res)).toBe('\"\\\\u001b[42m\\\\u001b[30m SUCCESS \\\\u001b[39m\\\\u001b[49m\\\\u001b[32m 成功信息\\\\u001b[39m\"');\n        }, () => Notice.success('成功信息'));\n    });\n    test('Notice.error', () => {\n        return onConsoleOut('error', (res) => {\n            expect(JSON.stringify(res)).toBe('\"\\\\u001b[41m ERROR \\\\u001b[49m\\\\u001b[31m 错误信息\\\\u001b[39m\"');\n        }, () => Notice.error('错误信息'));\n    });\n    test('Notice.warn', () => {\n        return onConsoleOut('warn', (res) => {\n            expect(JSON.stringify(res)).toBe('\"\\\\u001b[43m\\\\u001b[30m WARN \\\\u001b[39m\\\\u001b[49m\\\\u001b[33m 警告信息\\\\u001b[39m\"');\n        }, () => Notice.warn('警告信息'));\n    });\n    test('Notice.info', () => {\n        return onConsoleOut('info', (res) => {\n            expect(JSON.stringify(res)).toBe('\"\\\\u001b[44m\\\\u001b[30m INFO \\\\u001b[39m\\\\u001b[49m\\\\u001b[36m 普通信息\\\\u001b[39m\"');\n        }, () => Notice.info('普通信息'));\n    });\n    test('Notice.getStr', () => {\n        const res = Notice.getStr('info', '普通信息颜色文字');\n        expect(JSON.stringify(res)).toBe('\"\\\\u001b[36m普通信息颜色文字\\\\u001b[39m\"');\n    });\n    test('Notice.getBoldStr', () => {\n        const res = Notice.getBoldStr('blue', '普通信息颜色文字');\n        expect(JSON.stringify(res)).toBe('\"\\\\u001b[1m\\\\u001b[34m普通信息颜色文字\\\\u001b[39m\\\\u001b[22m\"');\n    });\n});\n\ndescribe('PresetUtils', () => {\n    const config = {\n        presets: [{\n            e: 'e',\n            b: ['b'],\n            c: 'c',\n        }],\n        a: 'a',\n        c: 'd',\n        b: [\n            'a',\n            'c',\n        ],\n        modify: (_config) => {\n            delete _config.c;\n        },\n    };\n    test('PresetUtils.getDeepPreset', async () => {\n        const res = await PresetUtils.getDeepPreset(config);\n        expect(res).toMatchObject([\n            { e: 'e', b: ['b'], c: 'c' },\n            { presets: [{ e: 'e', b: ['b'], c: 'c' }], a: 'a', c: 'd', b: ['a', 'c'] },\n        ]);\n    });\n    test('PresetUtils.getDeepPresetMerge', async () => {\n        const res = await PresetUtils.getDeepPresetMerge(config);\n        expect(res).toMatchObject({ a: 'a', b: ['b', 'a', 'c'], c: 'd', e: 'e' });\n    });\n    test('PresetUtils.getDeepPresetMergeAndModify', async () => {\n        const res = await PresetUtils.getDeepPresetMergeAndModify(config);\n        expect(res).toMatchObject({ a: 'a', b: ['b', 'a', 'c'], e: 'e' });\n    });\n});\n\ndescribe('CmdUtils', () => {\n\n    test('CmdUtils.runCommand', () => {\n        return CmdUtils.runCommand('cat', [path.join(__dirname, '../__mock__/test-package.json')]).then(() => {\n            expect(true).toBe(true);\n        });\n    });\n    test('CmdUtils.runCommand error', () => {\n        return CmdUtils.runCommand('aaa').catch((e) => {\n            expect(e.message).toMatch('aaa' + '执行失败');\n        });\n    });\n});\n\ndescribe('GitUtils', () => {\n    test('GitUtils.getUser', () => {\n        const user = GitUtils.getUser();\n        expect(Object.values(user).map(v => typeof v).join(' ')).toBe(new Array(3).fill('string').join(' '));\n    });\n});\n\ndescribe('NpmUtils', () => {\n    const packageName = '@agds/node-utils';\n    const version = '1.0.14';\n    test('NpmUtils.getRegistry', () => {\n        const res = NpmUtils.getRegistry();\n        expect(typeof res).toBe('string');\n    });\n});\n```\n\n## API文档\n\n<a name=\"module_nodeUtils\"></a>\n\n### nodeUtils\n\n<a name=\"module_nodeUtils.CmdParser\"></a>\n\n#### nodeUtils.CmdParser\n\n基于`commander.js`封装的命令行解析工具库\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.CmdParser.optionParseByConfig\"></a>\n\n##### CmdParser.optionParseByConfig(program, config)\n\n基于config配置Command实例\n\n**性质**: [<code>CmdParser</code>](#module_nodeUtils.CmdParser)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| program | <code>Command</code> | command实例 |\n| config | [<code>CmdConfig</code>](#CmdConfig) | 命令行解析配置 |\n\n\n<a name=\"CmdConfig\"></a>\n\n###### CmdConfig : <code>object</code>\n\n命令行解析配置\n\n**性质**: [<code>optionParseByConfig</code>](#module_nodeUtils.CmdParser.optionParseByConfig)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 描述 |\n| --- | --- | --- |\n| cmd | <code>string</code> | 作为插件时为子命令名称，单独使用时`agds-<cmd>`为命令行程序名称 |\n| desc | <code>string</code> | 描述 |\n| alias | <code>string</code> | 此命令的别名，只在插件调用时有效 |\n| opts | [<code>Array.&lt;OptConfig&gt;</code>](#OptConfig) | option配置项描述 |\n| args | [<code>Array.&lt;ArgConfig&gt;</code>](#ArgConfig) | option配置项描述 |\n\n\n<a name=\"OptConfig\"></a>\n\n###### OptConfig : <code>object</code>\n\n命令行option解析配置\n\n**性质**: [<code>optionParseByConfig</code>](#module_nodeUtils.CmdParser.optionParseByConfig)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 描述 |\n| --- | --- | --- |\n| opt | <code>string</code> | option字段配置 |\n| desc | <code>string</code> | 描述 |\n| default | <code>string</code> \\| <code>boolean</code> | 默认值 |\n| required | <code>boolean</code> | 是否是必填参数 |\n\n\n<a name=\"ArgConfig\"></a>\n\n###### ArgConfig : <code>object</code>\n\n命令行option解析配置\n\n**性质**: [<code>optionParseByConfig</code>](#module_nodeUtils.CmdParser.optionParseByConfig)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 描述 |\n| --- | --- | --- |\n| arg | <code>string</code> | option字段配置 |\n| desc | <code>string</code> | 描述 |\n| default | <code>string</code> \\| <code>boolean</code> | 默认值 |\n\n\n<a name=\"module_nodeUtils.CmdParser.cmdParser\"></a>\n\n##### CmdParser.cmdParser(options) ⇒ <code>Command</code>\n\n基于配置文件的命令行解析器\n\n**性质**: [<code>CmdParser</code>](#module_nodeUtils.CmdParser)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| options | <code>object</code> | 函数参数 |\n| options.root | <code>string</code> | 当前命令行npm包根目录 |\n| [options.isCore] | <code>boolean</code> | 是否是@agds/cli调用 |\n| [options.cmd] | <code>string</code> | 命令名称，命令调用必填 |\n\n\n<a name=\"module_nodeUtils.CmdUtils\"></a>\n\n#### nodeUtils.CmdUtils\n\n运行命令行的工具集\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.CmdUtils.installDependencies\"></a>\n\n##### CmdUtils.installDependencies(options, prod, [executable]) ⇒ <code>Promise.&lt;void&gt;</code>\n\n在项目中执行 `npm install`\n\n**性质**: [<code>CmdUtils</code>](#module_nodeUtils.CmdUtils)的静态方法\n\n| 参数 | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| options | <code>module:child\\_process~SpawnOptions</code> |  | spawn函数的选项参数 |\n| prod | <code>boolean</code> |  | 是否只下载生产依赖 |\n| [executable] | <code>&#x27;npm&#x27;</code> \\| <code>&#x27;yarn&#x27;</code> \\| <code>string</code> | <code>npm</code> | 依赖下载工具，可选值：'npm','yarn'或其他node包管理命令 |\n\n\n<a name=\"module_nodeUtils.CmdUtils.runCommand\"></a>\n\n##### CmdUtils.runCommand(cmd, args, options) ⇒ <code>Promise.&lt;void&gt;</code>\n\n生成一个子进程并运行指定的命令\n默认情况下，运行在CWD和'inherit'的stdio\n选项与node的child_process.spawn相同\n\n**性质**: [<code>CmdUtils</code>](#module_nodeUtils.CmdUtils)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| cmd | <code>string</code> | 命令 |\n| args | <code>Array.&lt;string&gt;</code> | 参数数组 |\n| options | <code>module:child\\_process~SpawnOptions</code> | spawn函数的选项参数 |\n\n\n<a name=\"module_nodeUtils.ConvName\"></a>\n\n#### nodeUtils.ConvName\n\n名称处理工具类，命名格式转换\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"new_module_nodeUtils.ConvName_new\"></a>\n\n##### new ConvName(name)\n\n获取三种名称转换结果的集合\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>stirng</code> | 名称文本 |\n\n\n<a name=\"module_nodeUtils.ConvName+lineName\"></a>\n\n##### convName.lineName : <code>string</code>\n\n横杠名称\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的instance属性\n\n<a name=\"module_nodeUtils.ConvName+humpName\"></a>\n\n##### convName.humpName : <code>string</code>\n\n大驼峰名称\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的instance属性\n\n<a name=\"module_nodeUtils.ConvName+lowerHumpName\"></a>\n\n##### convName.lowerHumpName : <code>string</code>\n\n小驼峰名称\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的instance属性\n\n<a name=\"module_nodeUtils.ConvName.toUpperHump\"></a>\n\n##### ConvName.toUpperHump(name) ⇒ <code>string</code>\n\n横杠转大驼峰\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>string</code> | 名称文本 |\n\n\n<a name=\"module_nodeUtils.ConvName.toLowerHump\"></a>\n\n##### ConvName.toLowerHump(name) ⇒ <code>string</code>\n\n横杠转小驼峰\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>string</code> | 名称文本 |\n\n\n<a name=\"module_nodeUtils.ConvName.toLine\"></a>\n\n##### ConvName.toLine(name) ⇒ <code>string</code>\n\n驼峰转换横杠\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>string</code> | 名称文本 |\n\n\n<a name=\"module_nodeUtils.ConvName.initName\"></a>\n\n##### ConvName.initName(name) ⇒ <code>ConvName</code>\n\n获取驼峰和横杠名称\n\n**性质**: [<code>ConvName</code>](#module_nodeUtils.ConvName)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>string</code> | 名称文本 |\n\n\n<a name=\"module_nodeUtils.FastFs\"></a>\n\n#### nodeUtils.FastFs\n\n文件系统操作类，集合了几个使用频率较高的文件操作函数\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.FastFs.writeFile\"></a>\n\n##### FastFs.writeFile(filename, data) ⇒ <code>Promise.&lt;void&gt;</code>\n\n异步写入数据，不存在的路径自动创建\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| filename | <code>fs.PathLike</code> | 文件名 |\n| data | <code>object</code> | 写入的数据（对象） |\n\n\n<a name=\"module_nodeUtils.FastFs.writeFileSync\"></a>\n\n##### FastFs.writeFileSync(filename, data) ⇒ <code>void</code>\n\n同步写入数据，不存在的路径自动创建\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| filename | <code>fs.PathLike</code> | 文件名 |\n| data | <code>object</code> | 写入的数据（对象） |\n\n\n<a name=\"module_nodeUtils.FastFs.getPathStat\"></a>\n\n##### FastFs.getPathStat(path) ⇒ <code>Promise.&lt;boolean&gt;</code>\n\n异步获取路径是否存在\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| path | <code>fs.PathLike</code> | 路径 |\n\n\n<a name=\"module_nodeUtils.FastFs.getPathStatSync\"></a>\n\n##### FastFs.getPathStatSync(path) ⇒ <code>boolean</code>\n\n同步获取路径是否存在\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| path | <code>fs.PathLike</code> | 路径 |\n\n\n<a name=\"module_nodeUtils.FastFs.writeJsonFormat\"></a>\n\n##### FastFs.writeJsonFormat(filename, data, [space]) ⇒ <code>Promise</code>\n\n异步写入符合.json格式的json文件\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| filename | <code>fs.PathLike</code> |  | 文件路径 |\n| data | <code>any</code> |  | 需要写入的数据 |\n| [space] | <code>string</code> \\| <code>number</code> | <code>2</code> | 指定缩进用的空白字符串 |\n\n\n<a name=\"module_nodeUtils.FastFs.writeJsonFormatSync\"></a>\n\n##### FastFs.writeJsonFormatSync(filename, data, [space]) ⇒ <code>void</code>\n\n同步写入符合.json格式的json文件\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| filename | <code>fs.PathLike</code> |  | 文件路径 |\n| data | <code>any</code> |  | 需要写入的数据 |\n| [space] | <code>string</code> \\| <code>number</code> | <code>2</code> | 指定缩进用的空白字符串 |\n\n\n<a name=\"module_nodeUtils.FastFs.readJson\"></a>\n\n##### FastFs.readJson(filename) ⇒ <code>Promise.&lt;object&gt;</code>\n\n异步读取json文件\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| filename | <code>fs.PathLike</code> | json文件路径 |\n\n\n<a name=\"module_nodeUtils.FastFs.readJsonSync\"></a>\n\n##### FastFs.readJsonSync(filename) ⇒ <code>object</code>\n\n同步读取json文件\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| filename | <code>fs.PathLike</code> | json文件路径 |\n\n\n<a name=\"module_nodeUtils.FastFs.sortDependencies\"></a>\n\n##### FastFs.sortDependencies(packageJsonFile)\n\n对packageJson的依赖对象进行key的排序\n\n**性质**: [<code>FastFs</code>](#module_nodeUtils.FastFs)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| packageJsonFile | <code>string</code> | packageJson文件绝对路径 |\n\n\n<a name=\"module_nodeUtils.FastPath\"></a>\n\n#### nodeUtils.FastPath\n\n路径工具类，快速获取各类node常用路径，每个方法要求路径都不是绝对路径\n如果是绝对路径，就按照绝对路径拼接\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.FastPath.getCwdPath\"></a>\n\n##### FastPath.getCwdPath(...paths) ⇒ <code>string</code>\n\n获取运行目录加路径的绝对路径\n\n**性质**: [<code>FastPath</code>](#module_nodeUtils.FastPath)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| ...paths | <code>string</code> | 路径 |\n\n\n<a name=\"module_nodeUtils.FastPath.getHomePath\"></a>\n\n##### FastPath.getHomePath(...paths) ⇒ <code>string</code>\n\n获取用户目录加路径的绝对路径\n\n**性质**: [<code>FastPath</code>](#module_nodeUtils.FastPath)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| ...paths | <code>string</code> | 路径 |\n\n\n<a name=\"module_nodeUtils.FastPath.getAgdsHomePath\"></a>\n\n##### FastPath.getAgdsHomePath(...paths) ⇒ <code>string</code>\n\n获取用户目录加路径的绝对路径\n\n**性质**: [<code>FastPath</code>](#module_nodeUtils.FastPath)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| ...paths | <code>string</code> | 路径 |\n\n\n<a name=\"module_nodeUtils.FastPath.convPath\"></a>\n\n##### FastPath.convPath(basePath, paths) ⇒ <code>string</code>\n\n基于基础路径拼接追加路径，如果追加路径数组第一个路径是绝对路径，忽略基础路径直接拼接返回<br/>\n是其他函数的依赖函数\n\n**性质**: [<code>FastPath</code>](#module_nodeUtils.FastPath)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| basePath | <code>string</code> | 基础路径 |\n| paths | <code>Array.&lt;string&gt;</code> | 追加路径数组 |\n\n\n<a name=\"module_nodeUtils.GitUtils\"></a>\n\n#### nodeUtils.GitUtils\n\nGit工具集合\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.GitUtils.gcHasMsg\"></a>\n\n##### GitUtils.gcHasMsg() ⇒ <code>boolean</code>\n\n判断`git commit`是否传入`-m`参数\n配合`yorkie`使用，不支持识别husky\n\n**性质**: [<code>GitUtils</code>](#module_nodeUtils.GitUtils)的静态方法\n\n<a name=\"module_nodeUtils.GitUtils.getUser\"></a>\n\n##### GitUtils.getUser() ⇒ [<code>UserObj</code>](#UserObj)\n\n获取当前git用户名称\n\n**性质**: [<code>GitUtils</code>](#module_nodeUtils.GitUtils)的静态方法\n**返回值**: [<code>UserObj</code>](#UserObj) - git用户名对象\n\n<a name=\"UserObj\"></a>\n\n###### UserObj : <code>object</code>\n\ngit用户名对象\n\n**性质**: [<code>getUser</code>](#module_nodeUtils.GitUtils.getUser)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 描述 |\n| --- | --- | --- |\n| name | <code>string</code> | 名字 |\n| email | <code>string</code> | 电子邮箱 |\n| all | <code>string</code> | {name}<{email}> |\n\n\n<a name=\"module_nodeUtils.Notice\"></a>\n\n#### nodeUtils.Notice\n\n基于chalk封装的控制台输出静态函数类\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"ChalkType\"></a>\n\n##### ChalkType : <code>&#x27;success&#x27;</code> \\| <code>&#x27;error&#x27;</code> \\| <code>&#x27;warn&#x27;</code> \\| <code>&#x27;info&#x27;</code> \\| <code>string</code>\n\nchalk类型以及别名\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的类型声明\n\n<a name=\"module_nodeUtils.Notice.success\"></a>\n\n##### Notice.success(msg) ⇒ <code>void</code>\n\n控制台输出成功信息\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| msg | <code>string</code> | 成功信息 |\n\n\n<a name=\"module_nodeUtils.Notice.error\"></a>\n\n##### Notice.error(msg) ⇒ <code>void</code>\n\n控制台输出错误信息\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| msg | <code>string</code> | 错误信息文本 |\n\n\n<a name=\"module_nodeUtils.Notice.warn\"></a>\n\n##### Notice.warn(msg) ⇒ <code>void</code>\n\n控制台输出警告信息\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| msg | <code>string</code> | 警告信息文本 |\n\n\n<a name=\"module_nodeUtils.Notice.info\"></a>\n\n##### Notice.info(msg) ⇒ <code>void</code>\n\n控制台输出信息\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| msg | <code>string</code> | 信息文本 |\n\n\n<a name=\"module_nodeUtils.Notice.getStr\"></a>\n\n##### Notice.getStr(type, msg) ⇒ <code>chalk</code>\n\n获取各种颜色的字体\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| type | [<code>ChalkType</code>](#ChalkType) | chalk类型 |\n| msg | <code>string</code> | 文本 |\n\n\n<a name=\"module_nodeUtils.Notice.getBoldStr\"></a>\n\n##### Notice.getBoldStr(type, msg) ⇒ <code>chalk</code>\n\n获取各种颜色的粗体字体\n\n**性质**: [<code>Notice</code>](#module_nodeUtils.Notice)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| type | [<code>ChalkType</code>](#ChalkType) | chalk类型 |\n| msg | <code>string</code> | 文本 |\n\n\n<a name=\"module_nodeUtils.NpmUtils\"></a>\n\n#### nodeUtils.NpmUtils\n\nnpm工具集合\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"module_nodeUtils.NpmUtils.getRegistry\"></a>\n\n##### NpmUtils.getRegistry() ⇒ <code>string</code>\n\n获取当前项目的npm镜像地址\n\n**性质**: [<code>NpmUtils</code>](#module_nodeUtils.NpmUtils)的静态方法\n\n<a name=\"module_nodeUtils.NpmUtils.getPackageInfo\"></a>\n\n##### NpmUtils.getPackageInfo(packageName, [version]) ⇒ <code>Promise</code>\n\n获取npm包的所有版本的所有信息\n\n**性质**: [<code>NpmUtils</code>](#module_nodeUtils.NpmUtils)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| packageName | <code>string</code> | 包名 |\n| [version] | <code>string</code> | 版本或tag |\n\n\n<a name=\"module_nodeUtils.NpmUtils.getPackageInfoWithVersion\"></a>\n\n##### NpmUtils.getPackageInfoWithVersion(packageName, [version]) ⇒ <code>Promise</code>\n\n获取指定版本包信息\n\n**性质**: [<code>NpmUtils</code>](#module_nodeUtils.NpmUtils)的静态方法\n**返回值**: <code>Promise</code> - 对应版本包信息\n\n| 参数 | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| packageName | <code>string</code> |  | 包名 |\n| [version] | <code>string</code> | <code>&quot;latest&quot;</code> | 版本或者版本tag |\n\n\n<a name=\"module_nodeUtils.NpmUtils.downloadPackage\"></a>\n\n##### NpmUtils.downloadPackage(options) ⇒ <code>string</code>\n\n下载npm包到本地\n\n**性质**: [<code>NpmUtils</code>](#module_nodeUtils.NpmUtils)的静态方法\n**返回值**: <code>string</code> - 包下载的本地路径\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| options | <code>object</code> | 下载配置 |\n| options.outputDir | <code>string</code> | 输出目录 |\n| options.packageName | <code>string</code> | 包名 |\n| [options.version] | <code>string</code> | 版本或者版本tag |\n| [options.autoInstall] | <code>boolean</code> \\| [<code>InstallOption</code>](#InstallOption) | 自动下载npm包依赖或者自动下载配置 |\n\n\n<a name=\"InstallOption\"></a>\n\n###### InstallOption : <code>object</code>\n\n下载配置\n\n**性质**: [<code>downloadPackage</code>](#module_nodeUtils.NpmUtils.downloadPackage)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| [prod] | <code>boolean</code> | <code>true</code> | 是否只下载生产依赖 |\n\n\n<a name=\"module_nodeUtils.PresetUtils\"></a>\n\n#### nodeUtils.PresetUtils\n\n支持presets预设的配置生成工具\n\n**性质**: [<code>nodeUtils</code>](#module_nodeUtils)的静态class\n\n<a name=\"Config\"></a>\n\n##### Config : <code>object</code>\n\n支持preset的配置对象\n\n**性质**: [<code>PresetUtils</code>](#module_nodeUtils.PresetUtils)的类型声明\n\n**属性**\n\n| 属性 | 类型 | 描述 |\n| --- | --- | --- |\n| presets | [<code>Array.&lt;Config&gt;</code>](#Config) | 预设配置数组 |\n| modify | [<code>ConfigModify</code>](#ConfigModify) | 将默认配置和preset合并后生成的config再次处理的钩子 |\n\n\n<a name=\"ConfigModify\"></a>\n\n##### ConfigModify ⇒ [<code>Config</code>](#Config)\n\n**性质**: [<code>PresetUtils</code>](#module_nodeUtils.PresetUtils)的类型声明\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | [<code>Config</code>](#Config) | 将默认配置和preset合并后生成的config |\n\n\n<a name=\"module_nodeUtils.PresetUtils.getDeepPreset\"></a>\n\n##### PresetUtils.getDeepPreset(config) ⇒ <code>Promise.&lt;Array.&lt;Config&gt;&gt;</code>\n\n递归获取配置对象presets数组，返回一维数组\n\n**性质**: [<code>PresetUtils</code>](#module_nodeUtils.PresetUtils)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | [<code>Config</code>](#Config) | 配置对象 |\n\n\n<a name=\"module_nodeUtils.PresetUtils.getDeepPresetMerge\"></a>\n\n##### PresetUtils.getDeepPresetMerge(config) ⇒ [<code>Config</code>](#Config)\n\n递归获取配置对象presets数组，并使用merge合并\n\n**性质**: [<code>PresetUtils</code>](#module_nodeUtils.PresetUtils)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | [<code>Config</code>](#Config) | 配置对象 |\n\n\n<a name=\"module_nodeUtils.PresetUtils.getDeepPresetMergeAndModify\"></a>\n\n##### PresetUtils.getDeepPresetMergeAndModify(config) ⇒ [<code>Config</code>](#Config)\n\n递归获取配置对象presets数组，并使用merge合并，最后调用`config.modify`函数\n\n**性质**: [<code>PresetUtils</code>](#module_nodeUtils.PresetUtils)的静态方法\n\n| 参数 | 类型 | 描述 |\n| --- | --- | --- |\n| config | [<code>Config</code>](#Config) | 配置对象 |\n\n\n\n<a name=\"cliUsages\"></a>\n\n## 命令行使用文档\n\n```\nUsage: agds-gc-has-msg [options]\n\n判断git commit命令是否传入-m参数\n\nOptions:\n  -v,--version  查看版本号\n  -h, --help    查看帮助信息\n\n配合git hooks【prepare-commit-msg】和【commitizen】使用，避免git commit已经传入-m参数时调用commitizen界面\n\n文档查看：git@gitee.com:agile-development-system/node-utils\n@agds/node-utils@1.0.16 /Users/jinyang/code/ads/node-utils/node_modules/@agds/node-utils\n```\n\n\n<a name=\"license\"></a>\n\n## 许可证\n\n[MIT License](https://gitee.com/agile-development-system/node-utils/blob/master/LICENSE)\nCopyright (c) 2021 锦阳\n\n<a name=\"donate\"></a>\n\n## 请维护者喝杯咖啡\n\n<img src=\"https://gitee.com/agile-development-system/agds-doc-preset/raw/master/lib/docs/qrcode/alipay.jpeg\" width=\"209px\" >\n<img src=\"https://gitee.com/agile-development-system/agds-doc-preset/raw/master/lib/docs/qrcode/wechatpay.jpeg\" width=\"237px\" >\n\n\n<a name=\"dingtalk\"></a>\n\n## 加入钉钉群讨论或加入开发\n\n<img src=\"https://gitee.com/agile-development-system/agds-doc-preset/raw/master/lib/docs/qrcode/dingtalk.jpeg\" width=\"188px\" >\n\n","readmeFilename":"README.md"}