diff --git a/.gitignore b/.gitignore index 855ff17..7209abb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ lerna-debug.log* upload/ mongo_data/ +logs/ # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/handler/employee.js b/handler/employee.js index 9b48f0c..3c11097 100644 --- a/handler/employee.js +++ b/handler/employee.js @@ -1,4 +1,5 @@ const Employee = require('../model/employee') +const {defaultLogger,errorLogger} = require("../log") const list=(req,res,next)=>{ Employee.find() @@ -8,6 +9,7 @@ const list=(req,res,next)=>{ }) }) .catch(error=>{ + errorLogger.info(error) res.json({ message: 'An error Occured!' }) @@ -15,7 +17,7 @@ const list=(req,res,next)=>{ } const detail = (req,res,next)=>{ - console.log(req.body) + defaultLogger.debug(req.body) let employeeID=req.body.employeeID Employee.findById(employeeID) .then(response=>{ @@ -23,8 +25,8 @@ const detail = (req,res,next)=>{ response }) }) - .catch(err=>{ - console.log(err) + .catch(error=>{ + defaultLogger.error(error) res.json({ message: 'An error Occured!' }) @@ -47,7 +49,7 @@ const create=(req,res,next)=>{ }) }) .catch(error=>{ - console.log(error) + errorLogger.info(error) res.json({ message: 'An error Occured!' }) @@ -70,6 +72,7 @@ const update=(req,res,next)=>{ }) }) .catch(error=>{ + errorLogger.info(error) res.json({ message: 'An error Occured!' }) diff --git a/log.js b/log.js new file mode 100644 index 0000000..0caa7b8 --- /dev/null +++ b/log.js @@ -0,0 +1,57 @@ +const log4js = require('log4js') +const path= require('path') + +let developmentLogConfig={} +if (process.env.NODE_ENV !== 'production'){ + developmentLogConfig={ + STDOUT: { + type: 'stdout' + } + } +} + +const logAccessFile = path.join(__dirname, './logs/access.log') +const logErrorFile=path.join(__dirname,'./logs/errors.log') + +log4js.configure({ + /** + * 如果生产环境在cluster模式下,pm2需要设置为true, 否则日志不生效 + * pm2: process.env.NODE_ENV === 'production' + */ + appenders: { + ...developmentLogConfig, + FILE_ALL: { + type: 'dateFile', // log4js 会按照日期分日志,一天一个文件,每过一天都会把前一天的 all.log 重命名为 all.2021-06-03.log + filename: logAccessFile, + backups: 10, // 日志最多保留10个 + maxLogSize: 10485760, // 文件最大值10M + daysToKeep: 10, // 最多保留10天的日志,如果为0则永久保存 + keepFileExt: true // 是否保持日志文件后缀名 + }, + FILE_ERROR: { + type: 'dateFile', + filename: logErrorFile, + daysToKeep: 30, + keepFileExt: true + } + }, + categories: { + default: { + appenders: process.env.NODE_ENV !== 'production' ? ['STDOUT', 'FILE_ALL'] : ['FILE_ALL'], + level: 'debug' + }, + error: { + appenders: ['FILE_ERROR'], + level: 'error' + } + } + }) + +const defaultLogger = log4js.getLogger() +const errorLogger = log4js.getLogger('error') + + // 导出对应的log +module.exports = { + defaultLogger, + errorLogger +} \ No newline at end of file diff --git a/package.json b/package.json index 6798058..aeed582 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,16 @@ "author": "", "license": "ISC", "dependencies": { - "body-parser": "^1.20.3", - "express": "^4.21.0", - "mongoose": "^8.6.2", - "morgan": "^1.10.0", - "multer": "1.4.5-lts.1" - }, - "devDependencies": { - "dotenv": "^16.4.5", - "nodemon": "^3.1.4" - } + "body-parser": "^1.20.3", + "express": "^4.21.0", + "log4js": "^6.9.1", + "mongoose": "^8.6.2", + "morgan": "^1.10.0", + "multer": "1.4.5-lts.1", + "selfupdate": "^1.1.0" + }, + "devDependencies": { + "dotenv": "^16.4.5", + "nodemon": "^3.1.4" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d12b899..fe154cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: express: specifier: ^4.21.0 version: 4.21.0 + log4js: + specifier: ^6.9.1 + version: 6.9.1 mongoose: specifier: ^8.6.2 version: 8.6.2 @@ -23,6 +26,9 @@ importers: multer: specifier: 1.4.5-lts.1 version: 1.4.5-lts.1 + selfupdate: + specifier: ^1.1.0 + version: 1.1.0 devDependencies: dotenv: specifier: ^16.4.5 @@ -56,6 +62,9 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + async@0.9.2: + resolution: {integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -126,6 +135,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -197,6 +210,9 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -205,6 +221,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -224,6 +244,14 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + graceful-fs@1.2.3: + resolution: {integrity: sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==} + engines: {node: '>=0.4.0'} + deprecated: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -280,10 +308,27 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + kareem@2.6.3: resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} engines: {node: '>=12.0.0'} + lodash-contrib@241.4.14: + resolution: {integrity: sha512-uU0lUaevOdRwprSShDldqY4PfG7HorHr0O31Dqc5/81bu6PdaI0qmPZKspkgviKnyHGQfymbDeAO9cByn1jJVQ==} + + lodash@2.4.1: + resolution: {integrity: sha512-qa6QqjA9jJB4AYw+NpD2GI4dzHL6Mv0hL+By6iIul4Ce0C1refrjZJmcGvWdnLUwl4LIPtvzje3UQfGH+nCEsQ==} + engines: {'0': node, '1': rhino} + + lodash@3.10.1: + resolution: {integrity: sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==} + + log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -390,6 +435,82 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm@2.15.12: + resolution: {integrity: sha512-WMoAJ518W0vHjWy1abYnTeyG9YQpSoYGPxAx7d0C0L7U7Jo44bZsrvTjccmDohCJGxpasdKfqsKsl6o/RUPx6A==} + hasBin: true + bundledDependencies: + - abbrev + - ansi + - ansi-regex + - ansicolors + - ansistyles + - archy + - async-some + - block-stream + - char-spinner + - chmodr + - chownr + - cmd-shim + - columnify + - config-chain + - dezalgo + - editor + - fs-vacuum + - fs-write-stream-atomic + - fstream + - fstream-npm + - github-url-from-git + - github-url-from-username-repo + - glob + - graceful-fs + - hosted-git-info + - imurmurhash + - inflight + - inherits + - ini + - init-package-json + - lockfile + - lru-cache + - minimatch + - mkdirp + - node-gyp + - nopt + - normalize-git-url + - normalize-package-data + - npm-cache-filename + - npm-install-checks + - npm-package-arg + - npm-registry-client + - npm-user-validate + - npmlog + - once + - opener + - osenv + - path-is-inside + - read + - read-installed + - read-package-json + - readable-stream + - realize-package-specifier + - request + - retry + - rimraf + - semver + - sha + - slide + - sorted-object + - spdx-license-ids + - strip-ansi + - tar + - text-table + - uid-number + - umask + - validate-npm-package-license + - validate-npm-package-name + - which + - wrappy + - write-file-atomic + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -410,6 +531,10 @@ packages: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} + osenv@0.0.3: + resolution: {integrity: sha512-VBk1bfdaO4gh3OWO8LBuDY2alp0buL8YzQ6t13xyc8PQPrnUg5AgQvINQx3UkS4dom8UGCL597q4Y2+M4TPvmw==} + deprecated: This package is no longer supported. + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -421,6 +546,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + president@1.0.0: + resolution: {integrity: sha512-aPmVNAWJeSKxvAgYESjmvhwSPR87NFtfD/y4v07cLAgpoxOa72oO/wBQsy+Hh+FK9BDQ41FSczSY9zImDdMazA==} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -435,6 +563,14 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + q@0.9.7: + resolution: {integrity: sha512-ijt0LhxWClXBtc1RCt8H0WhlZLAdVX26nWbpsJy+Hblmp81d2F/pFsvlrJhJDDruFHM+ECtxP0H0HzGSrARkwg==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -454,6 +590,13 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.1.4: + resolution: {integrity: sha512-tzwmX16YQhcFu0T/m0gHBcFKx6yQAg77Z6WWaQSJsUekXYa6yaAmHhrDdmFicgauX/er7GsdN+vRao3mBhA4kQ==} + deprecated: Rimraf versions prior to v4 are no longer supported + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -463,6 +606,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + selfupdate@1.1.0: + resolution: {integrity: sha512-LvRZUMKtvRp/MYY83hS4wFQr7B3DZmAHUsxyFFKkqprdCcIxS2nbaetHRn1ZZOz70vaYD4GwuW0SFoVVFSx4Og==} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -501,6 +647,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -512,6 +662,14 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} + tail@0.3.9: + resolution: {integrity: sha512-Up+GSK4BMchIUP58P44GX4Ejh1ZUlP5hf73zcjGGSvVW8mVRbQ29EqNZBBWR67hX1Pv99KC8lv9Vd0W1684NWA==} + engines: {node: '>= 0.4.0'} + + temp@0.6.0: + resolution: {integrity: sha512-u1OXtcOAVfUmsR2SawarQNGIQmK9FXeS/xbnQSqTpTI/e7/iXvUr8CGwLMISykdSoTliFOXlN7pl4ZShRVfqkQ==} + engines: {'0': node >=0.6.0} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -538,6 +696,10 @@ packages: undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -561,6 +723,10 @@ packages: resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} engines: {node: '>=16'} + windosu@0.1.3: + resolution: {integrity: sha512-qrJiAsSjlrfoCeodcxHcZV0c4tSKua+2yyDoVNWepdpwUsmzKoamWpxs6onfjcRKpWubbUwn6vXTUDxnD4pCGQ==} + hasBin: true + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -591,6 +757,8 @@ snapshots: array-flatten@1.1.1: {} + async@0.9.2: {} + balanced-match@1.0.2: {} basic-auth@2.0.1: @@ -676,6 +844,8 @@ snapshots: core-util-is@1.0.3: {} + date-format@4.0.14: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -766,10 +936,18 @@ snapshots: transitivePeerDependencies: - supports-color + flatted@3.3.1: {} + forwarded@0.2.0: {} fresh@0.5.2: {} + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fsevents@2.3.3: optional: true @@ -791,6 +969,11 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + graceful-fs@1.2.3: + optional: true + + graceful-fs@4.2.11: {} + has-flag@3.0.0: {} has-property-descriptors@1.0.2: @@ -837,8 +1020,30 @@ snapshots: isarray@1.0.0: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + kareem@2.6.3: {} + lodash-contrib@241.4.14: + dependencies: + lodash: 2.4.1 + + lodash@2.4.1: {} + + lodash@3.10.1: {} + + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.3.7(supports-color@5.5.0) + flatted: 3.3.1 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + media-typer@0.3.0: {} memory-pager@1.5.0: {} @@ -944,6 +1149,8 @@ snapshots: normalize-path@3.0.0: {} + npm@2.15.12: {} + object-assign@4.1.1: {} object-inspect@1.13.2: {} @@ -958,12 +1165,21 @@ snapshots: on-headers@1.0.2: {} + osenv@0.0.3: + optional: true + parseurl@1.3.3: {} path-to-regexp@0.1.10: {} picomatch@2.3.1: {} + president@1.0.0: + dependencies: + lodash: 3.10.1 + optionalDependencies: + windosu: 0.1.3 + process-nextick-args@2.0.1: {} proxy-addr@2.0.7: @@ -975,6 +1191,9 @@ snapshots: punycode@2.3.1: {} + q@0.9.7: + optional: true + qs@6.13.0: dependencies: side-channel: 1.0.6 @@ -1002,12 +1221,26 @@ snapshots: dependencies: picomatch: 2.3.1 + rfdc@1.4.1: {} + + rimraf@2.1.4: + optionalDependencies: + graceful-fs: 1.2.3 + optional: true + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + selfupdate@1.1.0: + dependencies: + async: 0.9.2 + lodash-contrib: 241.4.14 + npm: 2.15.12 + president: 1.0.0 + semver@7.6.3: {} send@0.19.0: @@ -1067,6 +1300,14 @@ snapshots: statuses@2.0.1: {} + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.3.7(supports-color@5.5.0) + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + streamsearch@1.1.0: {} string_decoder@1.1.1: @@ -1077,6 +1318,15 @@ snapshots: dependencies: has-flag: 3.0.0 + tail@0.3.9: + optional: true + + temp@0.6.0: + dependencies: + osenv: 0.0.3 + rimraf: 2.1.4 + optional: true + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -1098,6 +1348,8 @@ snapshots: undefsafe@2.0.5: {} + universalify@0.1.2: {} + unpipe@1.0.0: {} util-deprecate@1.0.2: {} @@ -1113,4 +1365,11 @@ snapshots: tr46: 4.1.1 webidl-conversions: 7.0.0 + windosu@0.1.3: + dependencies: + q: 0.9.7 + tail: 0.3.9 + temp: 0.6.0 + optional: true + xtend@4.0.2: {} diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 34ef243..0000000 --- a/public/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Document - - -

hello world.

- - \ No newline at end of file